В мире C# и.NET LINQ (Language Integrated Query) — это мощный инструмент, который позволяет разработчикам запрашивать данные и манипулировать ими в краткой и выразительной форме. Когда дело доходит до работы со списками объектов, LINQ предоставляет широкий спектр методов, которые могут упростить ваш код и сделать его более эффективным. В этой статье мы рассмотрим некоторые из наиболее часто используемых методов LINQ для работы со списками объектов, используя разговорный язык и практические примеры кода для иллюстрации их использования.
- Методы фильтрации.
LINQ предлагает несколько методов фильтрации списков объектов на основе определенных критериев. Вот несколько часто используемых:
a) Where: этот метод фильтрует список на основе указанного предиката и возвращает новую последовательность, содержащую только те элементы, которые удовлетворяют предикату. Например:
var filteredList = myList.Where(item => item.IsActive);
b) Firstи FirstOrDefault: эти методы возвращают первый элемент в списке, соответствующий заданному условию. Firstвыдает исключение, если элемент не найден, а FirstOrDefaultвозвращает значение по умолчанию для типа элемента. Например:
var firstElement = myList.First(item => item.Id == 1);
var defaultElement = myList.FirstOrDefault(item => item.Id == 10);
- Методы сортировки.
LINQ предоставляет удобные способы сортировки списков объектов по определенным критериям:
a) OrderByи OrderByDescending: эти методы сортируют список по возрастанию или убыванию соответственно на основе указанного ключа. Например:
var sortedList = myList.OrderBy(item => item.Name);
var reverseSortedList = myList.OrderByDescending(item => item.Age);
b) ThenByи ThenByDescending: эти методы используются для вторичной сортировки, позволяя сортировать список на основе нескольких ключей. Например:
var multiSorted = myList.OrderBy(item => item.Category).ThenBy(item => item.Name);
- Методы проецирования.
LINQ предлагает различные методы преобразования или проецирования элементов в списке:
a) Select: этот метод проецирует каждый элемент списка в новую форму. Он позволяет вам указать свойства или вычисления, которые вы хотите включить в результирующую проекцию. Например:
var projectedList = myList.Select(item => new { item.Name, item.Age });
b) SelectMany: этот метод проецирует каждый элемент списка в последовательность, а затем объединяет полученные последовательности в одну последовательность. Это полезно для работы с вложенными коллекциями. Например:
var flattenedList = myList.SelectMany(item => item.NestedCollection);
- Методы агрегирования.
LINQ предоставляет мощные методы для выполнения агрегирования списков объектов:
a) Count: этот метод возвращает количество элементов в списке, удовлетворяющих заданному условию. Например:
var count = myList.Count(item => item.IsActive);
b) Sum, Average, Minи Max: эти методы выполняют вычисления над числовым свойством. объектов в списке. Например:
var totalAge = myList.Sum(item => item.Age);
var averagePrice = myList.Average(item => item.Price);
var minPrice = myList.Min(item => item.Price);
var maxPrice = myList.Max(item => item.Price);
В этой статье мы рассмотрели лишь некоторые из множества мощных методов, предлагаемых LINQ для управления списками объектов. Используя возможности фильтрации, сортировки, проецирования и агрегирования LINQ, вы можете писать более чистый и лаконичный код, достигая при этом впечатляющих результатов. Итак, вперед и раскройте возможности LINQ в своих проектах C# и.NET!