2011-11-18 78 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

不是確切的答案,但接近它。謝謝你的幫助。 –