我有一個項目列表和一個LINQ查詢。現在,隨着LINQ的延期執行,後續的foreach循環只會執行一次查詢還是循環中的每一次執行?foreach只執行一次查詢嗎?
考慮這個例子(來自Introduction to LINQ Queries (C#), on MSDN兩者)
// The Three Parts of a LINQ Query:
// 1. Data source.
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
// 2. Query creation.
// numQuery is an IEnumerable<int>
var numQuery =
from num in numbers
where (num % 2) == 0
select num;
// 3. Query execution.
foreach (int num in numQuery)
{
Console.Write("{0,1} ", num);
}
或者,換句話說,會有任何區別,如果我有:
foreach (int num in numQuery.ToList())
而且,那就沒關係,如果底層數據不在數組中,而是在數據庫中?
是的。正如上面的編輯所解釋的,也許甚至不到整個查詢的執行。 –
感謝您詳細解釋我! – Marcel