Что такое отложенные (deferred) запросы в LINQ?

Отложенное выполнение означает, что LINQ-запрос описывается сейчас, а обход источника начинается при перечислении результата. Само создание цепочки Where/Select обычно ещё не вычисляет все элементы.

Короткий ответ

Что ответить на собеседовании

Отложенное выполнение означает, что LINQ-запрос описывается сейчас, а обход источника начинается при перечислении результата. Само создание цепочки Where/Select обычно ещё не вычисляет все элементы.

Подробный разбор

Ответ с пояснениями

Отложенное выполнение означает, что LINQ-запрос описывается сейчас, а обход источника начинается при перечислении результата. Само создание цепочки Where/Select обычно ещё не вычисляет все элементы.

Foreach, ToList, Count и другие завершающие операции запускают обработку согласно своему контракту. Повторное перечисление может повторно читать источник, выполнять запрос в БД и вызывать побочные эффекты.

Отложенное выполнение не всегда потоковое: OrderBy требует подготовить порядок перед выдачей. Чтобы зафиксировать результат и не повторять вычисления, используют материализацию, учитывая её стоимость по памяти.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее