IEnumerable и IQueryable — это два основных интерфейса для представления коллекций в .NET, каждый разработан для разных сценариев обработки данных.
IEnumerable работает с находящимися в памяти коллекциями и выполняет LINQ-запросы используя LINQ to Objects.
Ключевые характеристики:
System.CollectionsIQueryable разработан для внешних источников данных и транслирует запросы в форматы, специфичные для источника.
Ключевые характеристики:
IEnumerable после выполненияSystem.Linq.Expressions| Аспект | IEnumerable | IQueryable |
|---|---|---|
| Место выполнения | В памяти | Источник данных |
| Трансляция запроса | Делегаты | Деревья выражений |
| Источник данных | Коллекции в памяти | Внешние источники (базы данных) |
| Фильтрация | Все данные загружены, потом отфильтрованы | Фильтры применяются на стороне источника |
Используй IEnumerable когда:
Используй IQueryable когда:
Фундаментальное отличие — это место выполнения: IEnumerable обрабатывает данные локально, а IQueryable перекладывает выполнение запроса на внешний источник данных, что даёт выигрыш в производительности при работе с большими наборами данных.
IEnumerable выполняет запросы с помощью делегатов и обрабатывает все данные в памяти, а IQueryable строит деревья выражений и выполняет запросы в источнике данных.
Новый — ещё не проверен сообществом
Вы