Przetwarzanie kolekcji z Linq to Object cz2

W dzisiejszym odcinku zajmiemy się kolejnymi metodami Linq, tym razem do filtrowania danych.

Filtrowanie

Filtrowanie ogranicza ilość naszych danych wynikowych w taki sposób, ażeby spełniały odpowiednie warunki.

Where

Jeśli chcemy ograniczyć wyniki do określonych wartości stosujemy metodę Where.

Możemy również wykorzystać index elementu

Distinct

Distinct zwraca nam tylko różne elementy, więc jeśli w naszym zbiorze wystąpią powtórzenia zostaną one pominięte. W wynikowej kolekcji elementy będą w kolejności pierwszych wystąpień danej wartości.

OfType

Jeśli w kolekcji mamy elementy różnych typów, a chcemy wybrać tylko te konkretne, możemy wykorzystać metodę OfType<>, która to przefiltruje wyniki po zadanym typie.

Wybieranie specyficznych danych

Linq pozwala również wybrać konkretny element z listy, tak jak gdybyśmy chcieli kolekcję przefiltrować, a następnie wybrać jeden z jej elementów.

Single, SingleOrDefault

Metoda single powinna być wykorzystana, kiedy chcemy zwrócić dokładnie jeden element z naszej kolekcji. Jeśli elementów o zadanych parametrach będzie więcej lub nie będzie ich wcale, nastąpi rzucenie wyjątku. Jeżeli liczymy się z tym, iż odpowiedniego elementu może nie być na naszej liście, możemy wybrać SingleOrDefault, w tym przypadku rzucenie wyjątku nastąpi tylko w momencie, kiedy odpowiednich elementów będzie więcej niż jeden, a jeśli elementu spełniającego kryteria nie będzie zostanie zwrócona wartość domyślna.

First, FirstOrDefault, Last oraz LastOrDefault

Metody te powinny być wykorzystane, kiedy spodziewamy się większej ilości elementów pasujących do zadanych warunków. First oraz Last w przypadku, kiedy jesteśmy pewni, że taki element istnieje wybierają odpowiednio pierwsze lub ostatnie wystąpienie elementu. W przypadku, kiedy taki element nie istnieje rzucony zostanie wyjątek. FirsOrDefault oraz LastOrDefault działają tak samo jak First oraz Last z tą różnicą, że jeżeli elementu nie będzie, zwrócona zostanie wartość domyślna zamiast wyjątku.

Po przykłady zapraszam na GitHub-a 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 *