Sobes.tech
Назад к вопросам
Senior
5

Что такое LINQ? Разница между IEnumerable и IQueryable?

Компании, где спрашивали
Сбербанк

Ответ от нейросети

sobes.tech AI

LINQ (Language Integrated Query) — это технология в C#, которая позволяет писать запросы к коллекциям данных непосредственно в коде на C# с использованием синтаксиса, похожего на SQL. LINQ упрощает работу с данными, делая код более читаемым и выразительным.

Разница между IEnumerable и IQueryable:

  • IEnumerable<T> — интерфейс для перебора коллекций в памяти. Запросы к IEnumerable выполняются в памяти, то есть данные сначала загружаются, а затем фильтруются или обрабатываются. Подходит для работы с коллекциями в оперативной памяти.

  • IQueryable<T> — расширяет IEnumerable и позволяет строить запросы, которые могут быть преобразованы в выражения, исполняемые на стороне источника данных (например, в базе данных). Запросы к IQueryable откладываются и выполняются на сервере, что позволяет оптимизировать выборку данных.

Пример:

IQueryable<User> usersQuery = dbContext.Users.Where(u => u.Age > 18); // запрос к БД
var usersList = usersQuery.ToList(); // выполнение запроса и получение данных

IEnumerable<User> usersEnumerable = usersList.Where(u => u.IsActive); // фильтрация в памяти

Таким образом, IQueryable эффективен для построения запросов к удалённым источникам данных, а IEnumerable — для работы с уже загруженными коллекциями.