Встречается на 19% собеседований по C#

В чём разница между IEnumerable и IQueryable

IEnumerable и IQueryable — интерфейсы для работы с коллекциями, но с ключевыми отличиями:

  • IEnumerable:
    • Работает в памяти (LINQ to Objects).
    • Загружает все данные клиента перед фильтрацией.
    • Подходит для локальных коллекций (List, Array).
  • IQueryable:
    • Работает с удалёнными источниками (LINQ to SQL, Entity Framework).
    • Строит выражение запроса и выполняет его на сервере (оптимизация).
    • Подходит для БД или других провайдеров запросов.

Пример:

csharp
// IEnumerable: фильтрация на клиенте
IEnumerable<User> users = db.Users.AsEnumerable().Where(u => u.Age > 18);

// IQueryable: фильтрация на сервере (SQL WHERE)
IQueryable<User> users = db.Users.Where(u => u.Age > 18);

Вывод:
Используйте IQueryable для работы с БД (экономия трафика), IEnumerable — для операций в памяти.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы