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

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

IEnumerable работает с данными в памяти, выполняя запросы на стороне клиента (LINQ to Objects). Все данные загружаются в память перед обработкой.

IQueryable предназначен для работы с внешними источниками данных (например, базами). Запросы транслируются в язык источника (например, SQL) и выполняются на сервере, что оптимизирует производительность.

Пример:

csharp
// IEnumerable: фильтрация в памяти
IEnumerable<Product> products = db.Products.ToList(); // загружаем ВСЕ данные
var filtered = products.Where(p => p.Price > 100); // фильтр на клиенте

// IQueryable: фильтрация на сервере
IQueryable<Product> query = db.Products; // запрос не выполнен
var filteredQuery = query.Where(p => p.Price > 100); // переводится в SQL и выполняется на сервере

Ключевое отличие:

  • IEnumerable — "тянет" все данные, затем фильтрует.
  • IQueryable — строит запрос и выполняет его на источнике.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы