Przetwarzanie kolekcji z Linq to Object cz1

Linq

Linq jest językiem zapytań, który dodaje warstwę abstrakcji pomiędzy różnymi typami danych a obiektami. Zapytania można zapisać na dwa sposoby:

  • Składnia zapytań, gdzie zapis linq jest podobny do zapytań SQL-owych, nie mniej jednak dla mnie jest mało intuicyjny i z tego sposobu nie korzystam.
    Przykładowe zapytanie
  • Fluent Api, ten rodzaj zapisu jest dla mnie dużo bardziej czytelny, do zapisu wykorzystujemy łańcuch metod

Dostępne operacje

Wśród dostępnych operacji  chciałbym opisać:

  • Wybieranie danych
  • Filtrowanie
  • Szeregowanie
  • Operacje statystyczne

Wybieranie danych

Przez wybieranie danych mam na myśli wybranie elementów enumeracji lub też ich części składowych.

Select oraz SelectMany

Select umożliwia wybranie poszczególnych elementów lub ich odpowiednich przekształceń. Co ważne dla jednego elementu enumeracji możliwe jest pobranie tylko jednego elementu. Inaczej sprawa się ma z SelectMany, gdzie dla pojedynczego elementu wejściowego możemy pobrać większą ilość elementów.

W wynikowej kolekcji dostaniemy listę potęg  elementów wejściowych.

Jak widzimy  możemy odbierać więcej niż jeden element z każdego elementu wejściowego przy próbie wykonania tej samej operacji dostaniemy komunikat o błędzie. W tym konkretnym przypadku, że nie da się konwertować  typu IEnumerable<IEnumerable<int>> na tym IEnumerable<int>.

Skip, SkipWhile

Umożliwia pominięcie elementów z kolekcji. Dla skip pomijamy konkretną liczbę elementów, z kolei SkipWhile potrafi pominąć elementy do momentu, kiedy warunek pominięcia zostanie nie spełniony.

W powyższych przykładach pominięte zostaną  pierwsze 2 elementy.

Take, TakeWhile

Działają na identycznej zasadzie jak skip, z tą różnicą, że Take i TakeWhile wybierają elementy.

W tych przykładach wybierane są pierwsze cztery elementy.

Cast

Cast umożliwia rzutowanie elementów z kolekcji na inny typ.

 

Filtrowanie, szeregowanie oraz metody statystyczne opiszę w kolejnych postach. A już dzisiaj zapraszam do zapoznania się z przykładami dostępnymi na moim GitHub-ie https://github.com/Matejkos/BlogProjects/tree/master/LinqObjectOperations
CDN

Dodaj komentarz

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