results
è solo una query. Fino a quando non inizi ad iterarlo (esplicitamente o tramite una chiamata come Count()
), nulla ha verificato se ci sono risultati o meno. È solo quando lo enumerate che qualcosa accadrà.
Così si potrebbe fare:
foreach (int x in results)
{
Console.WriteLine("This won't happen");
}
Oppure:
Console.WriteLine(results.Any()); // Will print false
Console.WriteLine(results.Count()); // Will print 0
uno qualsiasi di questi causare il predicato di essere valutata a fronte di ogni elemento della gamma ... ma prima di allora, ha vinto essere chiamato affatto
Questa è una cosa importante da capire, perché vuol dire che results
non poteva essere null
, pur mantenendo la caratteristica di valutazione pigra - fino a quando si è tentato di usoresults
, non avrebbe funzionato se è dovrebbe essere null
o no!
fonte
2009-10-07 18:01:45
Quale sarebbe in "risultati" è * un oggetto che rappresenta la query *. Ricorda: l'oggetto query NON è il risultato della query. L'oggetto query è qualcosa che puoi * iterare per ottenere i risultati della query *, non è esso stesso i risultati. –