Отложенное выполнение означает, что LINQ-запрос описывается сейчас, а обход источника начинается при перечислении результата. Само создание цепочки Where/Select обычно ещё не вычисляет все элементы.
Что такое отложенные (deferred) запросы в LINQ?
Отложенное выполнение означает, что LINQ-запрос описывается сейчас, а обход источника начинается при перечислении результата. Само создание цепочки Where/Select обычно ещё не вычисляет все элементы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Отложенное выполнение означает, что LINQ-запрос описывается сейчас, а обход источника начинается при перечислении результата. Само создание цепочки Where/Select обычно ещё не вычисляет все элементы.
Foreach, ToList, Count и другие завершающие операции запускают обработку согласно своему контракту. Повторное перечисление может повторно читать источник, выполнять запрос в БД и вызывать побочные эффекты.
Отложенное выполнение не всегда потоковое: OrderBy требует подготовить порядок перед выдачей. Чтобы зафиксировать результат и не повторять вычисления, используют материализацию, учитывая её стоимость по памяти.