Отложенное выполнение LINQ-запросов означает, что операция не выполняется в точке кода, в котором объявлен запрос. 2 Она выполняется только после перечисления переменной запроса, например с помощью оператора foreach. 2
Некоторые особенности отложенного выполнения:
- Результаты выполнения запроса зависят от содержимого источника данных при выполнении запроса, а не при определении запроса. 2 Если переменная запроса перечисляется несколько раз, результаты могут каждый раз отличаться. 2
- Отложенное выполнение обеспечивает повторное использование запроса, так как запрос получает обновлённые данные из источника данных при каждом итерации результатов запроса. 2
- Переменная запроса сама по себе не выполняет никаких действий и не возвращает никаких данных. 3 Она только хранит набор команд, которые необходимы для получения результатов. 3
Отложенное выполнение характерно для всех стандартных операторов запроса, кроме операторов, возвращающих один элемент или скалярное значение, таких как First или Count. 4