Konwertuj język C# LINQ na słownik

Konwertuj Jezyk C Linq Na Slownik



W C# LINQ, tworzenie słownika z System.Collections.Generic.IEnumerable jest możliwe przy użyciu metody ToDictionary(). Ta metoda tworzy słownik z z danego . The System.ArgumentNullException jest generowany, jeśli źródło danych, keySelector lub elementSelector ma wartość null. Ponadto, jeśli keySelector tworzy zduplikowane klucze dla dwóch elementów, metoda System.ArgumentException Jest rzucony. W tym przewodniku omówimy, jak utworzyć słownik ze źródła danych listy, przeciążając dwie metody.

Składnia:

1. Jeśli chcesz utworzyć słownik zgodnie z określonymi funkcjami selektora klucza i selektora elementów z podanego źródła danych, przeładuj następującą metodę:









Parametry:



    1. źródło : Źródło może być IEnumerable (listą), w której słownik jest tworzony z tego źródła.
    2. kluczSelektor : Jest to funkcja, która służy do pobierania klucza z każdego elementu.
    3. Selektor elementów: Jest to funkcja, która służy do pobrania elementu.
    4. Źródło : Jest to parametr typu, który określa typ źródła danych.
    5. Klucz: Jest to parametr typu, który określa typ klucza.
    6. TElement : Jest to parametr typu, który określa typ elementu.

2. Jeśli chcesz utworzyć słownik zgodnie z określoną funkcją selektora kluczy z podanego źródła danych, przeciąż następującą metodę:





Parametry:



    1. źródło : Źródło może być IEnumerable (listą), w której słownik jest tworzony z tego źródła.
    2. kluczSelektor : Jest to funkcja, która służy do pobierania klucza z każdego elementu.
    3. Źródło: Odnosi się to do typu źródła danych.
    4. TKey : Określa typ klucza.

Przykład 1: Określony selektor kluczy i funkcja selektora elementów

Utwórz listę typu „Konto”, która zawiera cztery atrybuty (Identyfikator_konta, Nazwa_konta, Branża, Przychód) z pięcioma rekordami.

1. Utwórz słownik z poprzedniej listy z kluczem jako Acc_ID i wartością jako Acc_Name.
2. Utwórz słownik z poprzedniej listy z kluczem Acc_Name i Value jako Revenue.

za pomocą System ;
za pomocą System.Linq ;
za pomocą System.Collections.Generic ;

klasa Informacje o koncie
{
publiczny statyczny próżnia Główny ( )
{
// Utwórz listę typu - Konto.
Lista szczegółów = nowy Lista ( ) ;
// Dodaj 5 rekordów do listy.
Detale . Dodać ( nowy Konto { ID_akt = 1 , nazwa_akt = „Linux” , Przemysł = 'Edukacja' ,Przychód = 2500 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 2 , nazwa_akt = 'Pyton' , Przemysł = 'Obóz dla rekrutów' ,Przychód = 10000 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 3 , nazwa_akt = 'Jawa' , Przemysł = 'Edukacja' ,Przychód = 500 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 4 , nazwa_akt = '.INTERNET' , Przemysł = 'Szkolenie' ,Przychód = 2080 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 5 , nazwa_akt = 'Wyrocznia' , Przemysł = 'Stanowisko' ,Przychód = 2090 } ) ;

// Utwórz słownik z powyższej listy z kluczem jako Acc_ID i wartością jako Acc_Name
Konsola . Linia zapisu ( ' ----Klucz jako Acc_ID i wartość jako Acc_Name----' ) ;
Konta słownikowe_dict1 = Detale . Do słownika ( J => J . ID_akt , J => J . Nazwa_konta ) ;

dla każdego ( Para klucz-wartość i W konta_dykta1 )
{
Konsola . Linia zapisu ( 'ID konta :' + I . Klucz + ' Nazwa konta :' + I . Wartość ) ;
}

// Utwórz słownik z powyższej listy z kluczem jako Acc_Name i wartością jako Revenue
Konsola . Linia zapisu ( ' ----Klucz jako nazwa_konta i wartość jako przychód----' ) ;
Konta słownikowe_dict2 = Detale . Do słownika ( l => l . Nazwa_konta , l => l . Przychód ) ;

dla każdego ( Para klucz-wartość k W konta_dykt2 )
{
Konsola . Linia zapisu ( 'Nazwa konta :' + k . Klucz + „Przychody z konta:” + k . Wartość ) ;
}

}
}

// Utwórz klasę o nazwie - Konto z czterema atrybutami
publiczny klasa Konto
{
publiczny int ID_akt { Dostawać ; ustawić ; }
publiczny strunowy Nazwa_konta { Dostawać ; ustawić ; }
publiczny strunowy Przemysł { Dostawać ; ustawić ; }
publiczny int Przychód { Dostawać ; ustawić ; }
}

Wyjście:

Wyjaśnienie:

1. Utwórz klasę o nazwie „Konto” z czterema atrybutami.

2. W klasie głównej utwórz listę typu „Konto” i wstaw do niej pięć rekordów.

3. Utwórz słownik z poprzedniej listy z kluczem jako Acc_ID i wartością jako Acc_Name. Tutaj podajemy TKey jako int, a TElement jako string. Wewnątrz metody ToDictionary() przekazujemy Acc_ID w keySelector i Acc_Name w elementSelector. Na koniec używamy pętli „foreach” do iteracji słownika i zwracania kluczy i wartości przy użyciu właściwości key i value.

4. Utwórz słownik z poprzedniej listy z kluczem Acc_Name i wartością Revenue. Tutaj określamy TKey jako string, a TElement jako int. Wewnątrz metody ToDictionary() przekazujemy Acc_Name w keySelector i Revenue w elementSelector. Na koniec używamy pętli „foreach” do iteracji słownika i zwracania kluczy i wartości przy użyciu właściwości key i value.

Przykład 2: Określony selektor kluczy

Użyj poprzedniego kodu i utwórz słownik z poprzedniej listy z kluczem jako Acc_ID.

za pomocą System ;
za pomocą System.Linq ;
za pomocą System.Collections.Generic ;

klasa Informacje o koncie
{
publiczny statyczny próżnia Główny ( )
{
// Utwórz listę typu - Konto.
Lista szczegółów = nowy Lista ( ) ;
// Dodaj 5 rekordów do listy.
Detale . Dodać ( nowy Konto { ID_akt = 1 , nazwa_akt = „Linux” , Przemysł = 'Edukacja' ,Przychód = 2500 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 2 , nazwa_akt = 'Pyton' , Przemysł = 'Obóz dla rekrutów' ,Przychód = 10000 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 3 , nazwa_akt = 'Jawa' , Przemysł = 'Edukacja' ,Przychód = 500 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 4 , nazwa_akt = '.INTERNET' , Przemysł = 'Szkolenie' ,Przychód = 2080 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 5 , nazwa_akt = 'Wyrocznia' , Przemysł = 'Stanowisko' ,Przychód = 2090 } ) ;

// Utwórz słownik z powyższej listy z kluczem jako Acc_ID.
Konta słownikowe_dict = Detale . Do słownika ( J => J . ID_akt ) ;
dla każdego ( Para klucz-wartość i W konta_dykt )
{
Konsola . Linia zapisu ( 'Klucz:' + I . Klucz + „-->  Nazwa-konta:” + I . Wartość . Nazwa_konta
+ ' Konto-branża :' + I . Wartość . Przemysł
+ „Przychody z konta:” + I . Wartość . Przychód ) ;
}

}
}

// Utwórz klasę o nazwie - Konto z czterema atrybutami
publiczny klasa Konto
{
publiczny int ID_akt { Dostawać ; ustawić ; }
publiczny strunowy Nazwa_konta { Dostawać ; ustawić ; }
publiczny strunowy Przemysł { Dostawać ; ustawić ; }
publiczny int Przychód { Dostawać ; ustawić ; }
}

Wyjście:

Wyjaśnienie:

Tutaj tworzymy słownik z kluczem jako Acc_ID. Działa to jako klucz dla każdego rekordu w słowniku, który utworzyliśmy z listy. Następnie używamy pętli „foreach”, aby uzyskać klucze i wartości (wraz z atrybutami) za pomocą właściwości key i value.

Przykład 3: Zduplikowane klucze – ArgumentException

Utwórz listę z dwoma rekordami i spróbuj przekonwertować ją na słownik z Acc_ID jako kluczem.

za pomocą System ;
za pomocą System.Linq ;
za pomocą System.Collections.Generic ;

klasa Informacje o koncie
{
publiczny statyczny próżnia Główny ( )
{
// Utwórz listę typu - Konto.
Lista szczegółów = nowy Lista ( ) ;
// Dodaj 2 rekordy do listy.
Detale . Dodać ( nowy Konto { ID_akt = 1 , nazwa_akt = „Linux” , Przemysł = 'Edukacja' ,Przychód = 2500 } ) ;
Detale . Dodać ( nowy Konto { ID_akt = 1 , nazwa_akt = 'Pyton' , Przemysł = 'Obóz dla rekrutów' ,Przychód = 10000 } ) ;

// Spróbuj utworzyć słownik z powyższej listy z kluczem jako Acc_ID.
Konta słownikowe_dict = Detale . Do słownika ( J => J . ID_akt ) ;

}
}

// Utwórz klasę o nazwie - Konto z czterema atrybutami
publiczny klasa Konto
{
publiczny int ID_akt { Dostawać ; ustawić ; }
publiczny strunowy Nazwa_konta { Dostawać ; ustawić ; }
publiczny strunowy Przemysł { Dostawać ; ustawić ; }
publiczny int Przychód { Dostawać ; ustawić ; }
}

Wyjątek:

Zgłaszany jest nieobsługiwany wyjątek System.ArgumentException, ponieważ klucz jest zduplikowany (1) w obu Acc_ID.

Przykład 4: Null Source – ArgumentNullException

Utwórz listę typu „Konto” i przypisz jej wartość null. Spróbuj utworzyć słownik z poprzedniej listy z kluczem jako Acc_ID.

za pomocą System ;
za pomocą System.Linq ;
za pomocą System.Collections.Generic ;

klasa Informacje o koncie
{
publiczny statyczny próżnia Główny ( )
{
// Utwórz listę typu - Konto i przypisz do niej wartość null.
Lista szczegółów = zero ;

// Spróbuj utworzyć słownik z powyższej listy z kluczem jako Acc_ID.
Konta słownikowe_dict = Detale . Do słownika ( J => J . ID_akt ) ;

}
}

// Utwórz klasę o nazwie - Konto z czterema atrybutami
publiczny klasa Konto
{
publiczny int ID_akt { Dostawać ; ustawić ; }
publiczny strunowy Nazwa_konta { Dostawać ; ustawić ; }
publiczny strunowy Przemysł { Dostawać ; ustawić ; }
publiczny int Przychód { Dostawać ; ustawić ; }
}

Wyjątek:

Zgłaszany jest nieobsługiwany wyjątek System.ArgumentNullException, ponieważ lista ma wartość NULL.

Wniosek

Nauczyliśmy się tworzyć słownik z IEnumerable (tutaj jest to lista) za pomocą metody ToDictionary() w C# LINQ. Tę metodę można przeciążyć na dwa sposoby. Omówiliśmy obie metody z przykładami. Poznaliśmy również dwa wyjątki, które są wywoływane przez tę metodę, gdy źródło danych/keySelector/elementSelector ma wartość null, a klucze są zduplikowane.