我有一个项目列表和一个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