2014-09-04 29 views
-3

我得到System.Data.Objects.ObjectResult执行存储过程sp_GetCustSurveys,然后我遍历结果集。里面的主循环的,我想创建项目的子集(具有相同ID的产品清单):System.Data.Objects.ObjectResult的子集

using (MyObject_Surveys _db = new MyObject_Surveys()) 
     { 
      _db.CommandTimeout = 10000; 
      var rawSurveys = _db.sp_GetCustSurveys(); 
      foreach (var survey in rawSurveys) 
      { 
       var surveyMultipleLangs = rawSurveys.Where(w => w.Id.Contains("123")); 
         foreach (var itm in surveyMultipleLangs) 
         { 
          var myName = itm.Name; 
          var myLanguage = itm.Language; 
         } 
       .... 

当我通过子迭代,我得到错误: “查询结果不能被列举不止一次“。请指教。谢谢。

+0

它打破了什么? – 2014-09-04 17:37:04

+2

为什么你有一个外部'foreach',你没有用外部foreach中的'survey'做任何事情,你只是再次使用'rawSurveys'。看到这个问题http://stackoverflow.com/questions/5723555/the-result-of-a-query-cannot-be-enumerated-more-than-once – Habib 2014-09-04 17:37:06

+0

我有一个新的对象,每个servey我正在填写调查属性。我只是跳过了代码。我的问题是子集。我如何创建它? “surveyMultipleLangs”(循环,转换为列表..)的任何操作强制导致错误的枚举。 – 2014-09-04 17:44:06

回答

0

好的,明白了。我需要的仅仅是物化ObjectResult以便能够再次查询它: var rawSurveys = _db.sp_GetCustSurveys()。toList(); 它看起来很有效。