LINQ крайне прикольная штука, она позволяет решать сложные задачи обработки данных лаконично.
Сейчас расскажу про менее очевидные, но мощные возможности, которые помогут вам оптимизировать работу с коллекциями и данными:
1. Группировка с последующей фильтрацией — можно группировать элементы и сразу применять фильтры на основе условий:
var data = new[] { 1, 2, 3, 4, 5, 6 };
var result = data.GroupBy(x => x % 2)
.Where(g => g.Key == 1)
.SelectMany(g => g);
// Результат: [1, 3, 5]
2. Создание словарей с помощью ToDictionary — LINQ позволяет преобразовать коллекцию в словарь:
var items = new[] { "apple", "banana", "cherry" };
var dict = items.ToDictionary(x => x, x => x.Length);
// Результат: {"apple": 5, "banana": 6, "cherry": 6}
3. Выбор уникальных элементов через DistinctBy:
Сравнение объектов по конкретному ключу с использованием DistinctBy (доступно через
System.Linq
)var people = new[] {
new { Name = "Alice", Age = 30 },
new { Name = "Bob", Age = 25 },
new { Name = "Alice", Age = 35 }
};
var unique = people.DistinctBy(p =>
p.Name);
// Результат: Alice (30), Bob (25)