Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Чем отличаются IEnumerable и IQueryable? Где применяется отложенное выполнение запросов?
IEnumerable<T> выполняет перебор элементов в памяти (in-memory) и поддерживает отложенное выполнение только LINQ-to-Objects. IQueryable<T> расширяет IEnumerable<T> и позволяет строить выражения, которые переводятся в запрос на удалённый источник (БД), выполняя отложенное (deferred) выполнение на стороне сервера при первом переборе.
Чем отличаются интерфейсы IEnumerable<T> и IQueryable<T> и для чего нужен QueryProvider?
IEnumerable<T> выполняет LINQ-запросы в памяти, а IQueryable<T> строит выражение (Expression Tree), которое провайдер (QueryProvider) переводит в запрос к внешнему источнику (БД, API). QueryProvider отвечает за парсинг выражения, генерацию SQL (или другого формата) и получение данных, обеспечивая deferred execution и оптимизацию выполнения на стороне источника.
Как лямбда-выражения транслируются в SQL в контексте IQueryable<T>?
При работе с IQueryable<T> лямбда-выражение представляется как Expression Tree, которое QueryProvider анализирует, разбивая на части (методы, условия, проекции). Затем строится SQL-команда, где части Expression соответствуют WHERE, SELECT, ORDER BY. Фактическое выполнение происходит при перечислении, и в запрос включаются только поддерживаемые операции.
В чём отличие сигнатур методов расширения LINQ (Where, OrderBy и т. д.) для IEnumerable<T> и IQueryable<T>?
Для IEnumerable<T> методы расширения принимают Func<T, bool> (делегат), обрабатывая элементы в памяти, а для IQueryable<T> — Expression<Func<T, bool>> (дерево выражения), которое провайдер анализирует для перевода в удалённый запрос. Остальные методы (Select, OrderBy) аналогично различаются по типу параметра, что определяет, где и как выполняется логика.
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
6