LINQ (Language Integrated Query) — это технология в C#, позволяющая работать с коллекциями данных, используя удобный и декларативный синтаксис, похожий на SQL. Она упрощает работу с различными источниками данных, такими как массивы, списки, XML-документы, базы данных и даже веб-сервисы.
Основные возможности LINQ
- Унифицированный синтаксис для работы с разными источниками данных.
- Поддержка отложенного выполнения запросов.
- Возможность комбинирования и трансформации данных.
- Интуитивно понятное представление запросов.
Основные операторы LINQ
Операторы LINQ разделяются на несколько категорий:
1. Фильтрация
Позволяет выбрать элементы, соответствующие определённому условию.
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
2. Проекция (Select)
Позволяет преобразовывать элементы коллекции.
var words = new List<string> { "apple", "banana", "cherry" };
var lengths = words.Select(w => w.Length);
3. Сортировка
Позволяет упорядочивать элементы.
var sortedNumbers = numbers.OrderBy(n => n);
4. Группировка
Группирует элементы по определённому критерию.
var grouped = words.GroupBy(w => w.Length);
5. Агрегатные функции
Выполняют вычисления над элементами коллекции.
var sum = numbers.Sum();
var count = numbers.Count();
LINQ to Objects, LINQ to SQL и другие разновидности
LINQ работает с различными источниками данных:
- LINQ to Objects – применяется к коллекциям в памяти (
List<T>
,Array
). - LINQ to SQL (Entity Framework) – используется для работы с базами данных.
- LINQ to XML – облегчает работу с XML-документами.
- LINQ to JSON – позволяет обрабатывать JSON-данные.
Пример работы с LINQ to SQL
using (var context = new MyDbContext())
{
var users = context.Users.Where(u => u.Age > 18).ToList();
}
Запрос не выполнится сразу, а будет преобразован в SQL и выполнен только при вызове ToList()
.
LINQ делает работу с данными более удобной, предоставляя единый синтаксис для множества различных источников данных. Он улучшает читаемость кода и сокращает необходимость написания сложных циклов и условий вручную.