Foreach выполняет запрос только один раз?
У меня есть список предметов и запрос LINQ по ним. Теперь, с отложенным выполнением LINQ, будет ли последующий цикл foreach выполнять запрос только один раз или для каждого поворота в цикле?
Учитывая этот пример (взято изВведение в LINQ Queries (C #), на 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())
И имеет ли это значение, если лежащие в основе данные находятся не в массиве, а в базе данных?