Українська
Підсумки
Висновки
LINQ дозволяє описувати запити до послідовностей декларативно: оператори Where, Select, OrderBy, GroupBy, Join та інші є методами розширення для IEnumerable<T>, що приймають лямбда-вирази, а синтаксис запитів компілюється в ті самі виклики. Більшість операторів виконуються відкладено: запит обробляє дані під час перебору, бачить зміни джерела й виконується заново під час кожного перебору; ToList і ToArray фіксують результат. Оператори отримання елемента по-різному реагують на порожню послідовність і дублікати, агрегатні оператори обчислюють підсумки, GroupBy і з’єднання будують звіти з кількох джерел, а нові оператори .NET 9–10 (CountBy, AggregateBy, Index, LeftJoin) скорочують типові запити. Усередині LINQ побудований на ітераторах, тому власні оператори створюються так само.
Питання для самоперевірки
- Що таке LINQ? На якому інтерфейсі побудовано LINQ to Objects?
- Чим відрізняються синтаксис методів і синтаксис запитів?
- Для чого використовують
Where,SelectіSelectMany? - Що таке анонімний тип? Які в нього обмеження?
- Як відсортувати послідовність за кількома ключами?
- Що таке відкладене виконання? Які оператори виконуються негайно?
- Чим відрізняються
First,FirstOrDefaultіSingle? - Чим
MaxByвідрізняється відMax? - Як працює
GroupBy? Що такеIGrouping<TKey, TElement>? - Що повертають
CountByіAggregateBy? - Чим
Joinвідрізняється відGroupJoinіLeftJoin? - Як реалізувати посторінковий вивід засобами LINQ?
- Як реалізувати власний оператор LINQ?
- Чому для перевірки наявності елементів краще
Any(), ніжCount() > 0?
Корисні посилання
- LINQ: https://learn.microsoft.com/dotnet/csharp/linq/
- Запити LINQ: https://learn.microsoft.com/dotnet/csharp/linq/get-started/introduction-to-linq-queries
- Стандартні оператори запитів: https://learn.microsoft.com/dotnet/csharp/linq/standard-query-operators/
- Клас
Enumerable: https://learn.microsoft.com/dotnet/api/system.linq.enumerable - Нове в бібліотеках .NET 10: https://learn.microsoft.com/dotnet/core/whats-new/dotnet-10/libraries