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