C# LINQ to Object

LINQ to Objects

Jak już wspomniałem dla technologii LINQ źródłem danych może być np. kolekcja, czyli obiekt. Aby pokazać zastosowanie tej technologii prześledźmy sobie poniższy przykład.

Dla potrzeb naszego przykładu stworzymy sobie klasę „Produkt”, która będzie przechowywała model naszego obiektu. W naszym przypadku będą to perfumy.

Listing 18.1 Stworzenie klasy Produkt – modelu danych.

Określiliśmy model, to teraz stworzymy kolekcję 5 produktów.

Listing 18.2 Tworzymy kolekcję obiektów o typie Produkt.

I tutaj dochodzimy do stworzenia zapytania w technologii LINQ do naszego źródła danych, w naszym przypadku jest to kolekcja „listaProduktow”.Na początku stworzymy sobie listę wszystkich obiektów z kolekcji.

Listing 18.3 Tworzymy zapytanie LINQ do kolekcji listaProdutkow.

Łączymy wszystko, co zrobiliśmy do tej pory.

Zobacz cały kod.

Poniżej zrzut ekranu po uruchomieniu programu.

LIKQ to Objects
Rysunek 1. Wynik uruchomienia programu.

Operator JOIN

 

Za pomocą technologii LINQ to Objects możemy łączyć zbiory/kolekcje które nie posiadają takiej samej struktury. Do takiej operacji wykorzystujemy operator JOIN. Dla naszych potrzeb z kolekcji listaProdutków stworzymy sobie dwie kolekcje. Pierwsza będzie zawierała id, markę, nazwę i typ, a druga będzie zawierała id, dlaKogo, pojemność i cenę.

Tworzymy pierwszą kolekcję o nazwie perfumy_dane_podstawowe.

Listing 18.5 Tworzymy kolekcję perfumy_dane_podstawowe.

a następnie tworzymy drugą kolekcję perfumy_dane_dodatkowe

Listing 18.6 Tworzymy kolekcję perfumy_dane_dodatkowe.

Mamy więc dwie kolekcje dotyczące tych samych perfum ale zawierające różne dane. Do prawidłowego połączenia obu kolekcji potrzebujemy jakiegoś klucza, bo chcemy aby dane z pól: dlaKogo, pojemność i cena były przyporządkowane do odpowiednich nazw perfum. Aby móc to zrobić w obu kolekcjach powinno znajdować się pole wg którego będzie możliwe wiązanie i w naszym przypadku tym polem (kluczem) jest pole id. Teraz za pomocą tego klucza (pole Id) wykorzystując operator JOIN będę mógł połączyć obie kolekcje w jedną, co prezentuje poniższy listing.

Listing 18.7 Łączenie dwóch kolekcje z wykorzystaniem operatora JOIN.

Słówko wyjaśnienia do powyższego kodu. Po słówku FROM określamy pierwszą kolekcję które będzie podlegała łączeniu. Następnie musimy wskazać kolekcję z którą będziemy chcieli łączyć tą pierwszą ale żeby kompilator nas zrozumiał dodajemy słówko JOIN i po nim określamy drugą kolekcję do łączenia. Jak już wcześniej wspomniałem obie kolekcje łączymy po kluczu którym w naszym przypadku jest pole id i to musimy wpisać w kolejnym kroku. Po słówku ON wskazujemy pole id w pierwszej kolumnie, następnie wpisujemy słówko equals (określające, że oba pola id w obu kolekcjach musza być równe) i wskazujemy pole id w drugiej kolekcji. Po słówku SELECT NEW wypisujemy pola jakie chcemy uwzględnić w nowej kolekcji.