2011-11-18 56 views
1


我正在LINQ函数中,我在for循环中使用ToList()。在第一次迭代中,它工作正常,但随后它抛出一个异常,因为LINQ错误:查询结果不能枚举超过一次

“查询结果不能枚举多次。

示例代码是;

for() 
{ 
    functionCall(); 
} 

functionCall() 
{ 
    var query = <<query logic>>; 
    query.ToList(); 
} 

我搜索了很多解决这个问题,但每个人都在说使用ToList(); 而我在ToList()本身出现错误。
请帮我解决这个问题。


预先感谢

+0

迭代结束是什么?我会开始寻找你的内部和外部循环之间的共同点。有些东西正在试图与其他东西一样迭代。 – Jay

回答

1

您评估查询不止一次,为什么不是你的代码重构这个..?

// Evaluate the query once 
var query = <<query logic>>.ToList(); 

// Do your loop, passing the evaluated results into the function 
for() 
{ 
    functionCall(query); 
} 

functionCall(query) 
{ 
    //Do whatever you need here 
} 
+0

其实它是一个嵌套的调用。这个查询必须在for循环中执行。查询输出然后用于下一个操作。 –

+0

你可以用你的例子更清楚些吗?在循环内执行linq查询时需要注意一些事情 - .net不一定会在循环内对它进行评估,因此它可能会在稍后使用相同的输入进行评估。 – kmp

+0

不是确切的答案,但接近它。谢谢你的帮助。 –