2013-11-22 27 views
0

以下代码在第二个ToList()上抛出“无法枚举多次”。修复此错误的最佳方法是什么?如何避免无法枚举使用两个查询不止一次

var firstQuery = (from r in db.SomeProcedure(Id) 
         select new MyClass 
         { 
          Id = r.Id, 
          Name = r.Name, 
          Company= r.Company, 
          Title = r.Title 
         }); 

     var secondQuery = (from d in firstQuery 
          group d by d.Title into groupedTitles 
         select new MyClass2 
         {         
          Title = groupedTitles.Key, //How To include the Id         
         }); 

      List<MyClass> mClass = firstQuery.ToList(); 
      Th Below ToList() is throwing a cannot enumerate more than one 
      List<MyClass2> mClass2 = secondQuery.ToList(); 

我该如何解决这个错误?

回答

0

转换第一个查询到一个列表的时候了。

var firstQuery = (from r in db.SomeProcedure(Id) 
        select new MyClass 
        { 
         Id = r.Id, 
         Name = r.Name, 
         Company= r.Company, 
         Title = r.Title 
        }).ToList(); 

    var secondQuery = (from d in firstQuery 
         group d by d.Title into groupedTitles 
        select new MyClass2 
        {         
         Title = groupedTitles.Key, //How To include the Id         
        }); 

     List<MyClass> mClass = firstQuery; 
     List<MyClass2> mClass2 = secondQuery.ToList(); 
+0

这将不支持第二个查询的服务器端查询。 – usr

+0

@us确实 - 这是一个限制。 –

相关问题