O foreach executa a consulta apenas uma vez?
Eu tenho uma lista de itens e uma consulta LINQ sobre eles. Agora, com a execução adiada do LINQ, um loop foreach subsequente executaria a consulta apenas uma vez ou para cada turno no loop?
Dado este exemplo (retirado deIntrodução às consultas LINQ (C #), no 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);
}
Ou, em outras palavras,haveria alguma diferença se eu tivesse:
foreach (int num in numQuery.ToList())
E, isso importaria se os dados subjacentes não estivessem em uma matriz, mas em um banco de dados?