Przetwarzanie kolekcji z Linq to Object cz4

Dzisiaj ostatni odcinek z serii o Linq to object. Opowiem nieco więcej o metodach statystycznych oraz innych dostępnych w linq.

Metody Statystyczne

Metody statystyczne zwracają nam konkretne wartości obliczane na podstawie elementów z kolekcji.

Min, Max

Metody wybierają najmniejszą i największą wartość w naszej kolekcji. Można szeregować elementy po wartościach liczbowych lub jeśli nasz typ implementuje interface IComparable po naszych typach wprost.

Sum, Average

Metody te potrafią obliczyć sumę oraz średnią wartości liczbowych. W parametrach możemy podać selektor właściwości elementu.

Aggregate

Metoda umożliwiająca agregację danych. W najprostszej formie przyjmuje tylko dwuparametrową funkcję agregującą, gdzie pierwszym parametrem jest agregat a drugim kolejna wartość.

Count

Umożliwia policzenie elementów w kolekcji. W postaci bezparametrowej liczy wszystkie elementy, aczkolwiek możemy wprowadzić ograniczenia i policzyć tylko interesujące nas obiekty.

Any

Przydatna metoda, jeśli chcemy szybko sprawdzić czy kolekcja posiada odpowiednie elementy, bądź elementy w ogóle. Moim zdaniem jest czytelniejsza, gdy chodzi o wykonanie akcji, jeśli w kolekcji są elementy od standardowego przyrównania ilości elementów do zera.

Przekształcenia kolekcji

Ostatnim elementem jaki chciałbym opisać będą przekształcenia kolekcji, gdzie z jednej kolekcji tworzymy inne.

Concat

Służy do łączenia kolekcji ze sobą.  Przy łączeniu kolejność elementów nie zostanie zmieniona a jedynie po zakończeniu pierwszego zbioru w kolekcji dodane zostaną elementy z drugiego zbioru.

Union

Działa podobnie do Concat z tą małą różnicą, iż w wynikowej kolekcji będziemy mieli tylko i wyłącznie unikalne wartości. Można to porównać do wykorzystania łańcucha Concat -> Distinct.

GroupBy

Metoda grupująca, umożliwia zgrupowanie elementów. Wynikowo otrzymujemy kolekcję grup, gdzie każda grupa posiada klucz oraz enumerator na kolejne elementy grupy.

To  byłoby tyle na dziś. Opisałem chyba większość metod, z których korzystam na co dzień i które w moim mniemaniu są ważne i warto, żeby je znać. Przykłady wykorzystania jak zwykle na GitHubie https://github.com/Matejkos/BlogProjects/tree/master/LinqObjectOperations

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *