Ho un elenco di elementi e una query LINQ su di essi. Ora, con l'esecuzione differita di LINQ, un ciclo foreach successivo eseguirà la query solo una volta o per ogni giro del ciclo?Foreach esegue la query solo una volta?
Dato questo esempio (Tratto da 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);
}
O, in altre parole, ci sarebbe alcuna differenza se avessi:
foreach (int num in numQuery.ToList())
E, sarebbe la materia, se i dati sottostanti non sono in un array, ma in un Database?
Sì, una volta. Forse anche meno di un'intera esecuzione della query, come spiega la modifica sopra. –
Grazie per avermi spiegato in dettaglio! – Marcel