Wprowadzenie
LINQ również jest aktywnie rozwijane. Oprócz różnych usprawnień, zwiększających wydajność poszczególnych metod, pojawiają się także nowe rozszerzenia, które ułatwiają codzienną pracę. Chciałbym podzielić się z wami rozszerzeniami, które zostały dodane w ostatnich kilku wersjach .NET.
Przegląd
Wszystkie przykłady będziemy uruchamiać na podstawie poniższej kolekcji
Person[] items =
[
new("Jakub", "Wierzbanowski", new DateTime(1967, 12, 1)),
new("Jakub", "Kowalski", new DateTime(1985, 12, 12)),
new("Marian", "Nowak", new DateTime(1964, 9, 5)),
];
Chunk – metoda służąca do dzielenia kolekcji na mniejsze części. Przyjmuje jako parametr rozmiar „chunków”.
var chunks = items.Chunk(2); // zwróci dwie kolekcja, 2 elementy oraz 1 element
MaxBy oraz MinBy – służą do wyciągania elementu o największej lub najmniejszej wartości na podstawie wskazanego kryterium.
var result = items.MaxBy(x => x.DateOfBirth.Year); // element gdzie rok jest największy
var result = items.MinBy(x => x.DateOfBirth.Month); // element gdzie miesiąc jest najmniejszy
CountBy – pozwala na zgrupowanie wyników i ich podliczenie na podstawie wskazanej właściwości.
var result = items.CountBy(x => x.FirstName); // zwraca typ IEnumerable<KeyValuePair<>> { "Jakub", 2 }, { "Marian", 1 }