results
сам по себе просто запрос. Пока вы не начнете перебирать его (явно или через вызов типа Count()
), ничто не проверяет, есть ли результаты или нет. Только когда вы перечислите это, что-нибудь случится.
Чтобы вы могли сделать:
foreach (int x in results)
{
Console.WriteLine("This won't happen");
}
Или:
Console.WriteLine(results.Any()); // Will print false
Console.WriteLine(results.Count()); // Will print 0
Любое из них приведет к оценке предиката для каждого элемента в диапазоне ... но до этого он вообще не будет вызываться.
Это важная вещь для понимания, потому что это означает, что results
не может быть null
при сохранении функции отложенной оценки - пока вы не попытаетесь использовать results
, это не сработало бы, должно ли это быть null
или нет!