Pretvorite C# LINQ v slovar

Pretvorite C Linq V Slovar



V C# LINQ ustvarjanje slovarja iz System.Collections.Generic.IEnumerable je možno z uporabo metode ToDictionary(). Ta metoda ustvari slovar s iz danega . The System.ArgumentNullException se vrže, če je vir podatkov, keySelector ali elementSelector nič. Poleg tega, če keySelector ustvari podvojene ključe za dva elementa, bo System.ArgumentException je vržen. V tem priročniku bomo razpravljali o tem, kako ustvariti slovar iz podatkovnega vira seznama s preobremenitvijo dveh metod.

Sintaksa:

1. Če želite ustvariti slovar v skladu z določenimi funkcijami izbirnika ključev in izbirnika elementov iz podanega vira podatkov, preobremenite to metodo:









Parametri:



    1. vir : Vir je lahko IEnumerable (seznam), v katerem je slovar ustvarjen iz tega vira.
    2. keySelector : To je funkcija, ki se uporablja za pridobivanje ključa iz vsakega elementa.
    3. elementSelector: To je funkcija, ki se uporablja za pridobitev elementa.
    4. TSource : To je parameter tipa, ki določa vrsto vira podatkov.
    5. TKey: To je parameter tipa, ki določa vrsto ključa.
    6. TElement : To je parameter tipa, ki določa vrsto elementa.

2. Če želite ustvariti slovar glede na podano funkcijo izbirnika ključev iz danega vira podatkov, preobremenite to metodo:





Parametri:



    1. vir : Vir je lahko IEnumerable (seznam), v katerem je slovar ustvarjen iz tega vira.
    2. keySelector : To je funkcija, ki se uporablja za pridobivanje ključa iz vsakega elementa.
    3. TSource: To se nanaša na vrsto vira podatkov.
    4. TKljuč : Določa vrsto ključa.

Primer 1: Podan izbirnik tipk in funkcija izbirnika elementov

Ustvarite seznam z vrsto »Račun«, ki vsebuje štiri atribute (Acc_ID, Acc_Name, Industry, Revenue) s petimi zapisi.

1. Ustvarite slovar iz prejšnjega seznama s ključem kot Acc_ID in vrednostjo kot Acc_Name.
2. Ustvarite slovar iz prejšnjega seznama s ključem kot Acc_Name in vrednostjo kot Revenue.

uporabo Sistem ;
uporabo System.Linq ;
uporabo System.Collections.Generic ;

razred Podatki o računu
{
javnosti statična praznina Glavni ( )
{
// Ustvari seznam vrste - račun.
Seznam podrobnosti = novo Seznam ( ) ;
// Dodajte 5 zapisov na seznam.
podrobnosti . Dodaj ( novo račun { Acc_ID = 1 , Ime računa = 'Linux' , Industrija = 'Izobraževanje' ,Prihodek = 2500 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 2 , Ime računa = 'Python' , Industrija = 'Tabor' ,Prihodek = 10000 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 3 , Ime računa = 'Java' , Industrija = 'Izobraževanje' ,Prihodek = 500 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 4 , Ime računa = '.MREŽA' , Industrija = 'usposabljanje' ,Prihodek = 2080 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 5 , Ime računa = 'Oracle' , Industrija = 'zaposlitev' ,Prihodek = 2090 } ) ;

// Ustvarite slovar z zgornjega seznama s ključem kot Acc_ID in vrednostjo kot Acc_Name
Konzola . WriteLine ( ' ----Key kot Acc_ID in vrednost kot Acc_Name----' ) ;
Slovarski računi_dict1 = podrobnosti . ToDictionary ( j => j . Acc_ID , j => j . Ime računa ) ;

za vsakogar ( KeyValuePair i v accounts_dict1 )
{
Konzola . WriteLine ( 'ID računa:' + jaz . Ključ + ' Ime računa :' + jaz . Vrednost ) ;
}

// Ustvarite slovar z zgornjega seznama s ključem kot Acc_Name in vrednostjo kot prihodkom
Konzola . WriteLine ( ' ----Key kot Acc_Name in Value kot Revenue----' ) ;
Slovar accounts_dict2 = podrobnosti . ToDictionary ( l => l . Ime računa , l => l . Prihodki ) ;

za vsakogar ( KeyValuePair k v accounts_dict2 )
{
Konzola . WriteLine ( 'Ime računa :' + k . Ključ + 'Prihodek računa:' + k . Vrednost ) ;
}

}
}

// Ustvari razred z imenom - račun s štirimi atributi
javnosti razred račun
{
javnosti int Acc_ID { dobiti ; set ; }
javnosti vrvica Ime računa { dobiti ; set ; }
javnosti vrvica Industrija { dobiti ; set ; }
javnosti int Prihodki { dobiti ; set ; }
}

Izhod:

Pojasnilo:

1. Ustvarite razred z imenom 'Račun' s štirimi atributi.

2. V glavnem razredu ustvarite seznam tipa 'Račun' in vanj vstavite pet zapisov.

3. Ustvarite slovar iz prejšnjega seznama s ključem kot Acc_ID in vrednostjo kot Acc_Name. Tukaj določimo TKey kot int in TElement kot niz. Znotraj metode ToDictionary() posredujemo Acc_ID v keySelector in Acc_Name v elementSelector. Na koncu uporabimo zanko »foreach« za ponovitev slovarja in vrnitev ključev in vrednosti z uporabo lastnosti ključa in vrednosti.

4. Ustvarite slovar iz prejšnjega seznama s ključem kot Acc_Name in vrednostjo kot Revenue. Tukaj določimo TKey kot niz in TElement kot int. Znotraj metode ToDictionary() posredujemo Acc_Name v keySelector in Revenue v elementSelector. Na koncu uporabimo zanko »foreach« za ponovitev slovarja in vrnitev ključev in vrednosti z uporabo lastnosti ključa in vrednosti.

Primer 2: Določen izbirnik ključev

Uporabite prejšnjo kodo in ustvarite slovar iz prejšnjega seznama s ključem kot Acc_ID.

uporabo Sistem ;
uporabo System.Linq ;
uporabo System.Collections.Generic ;

razred Podatki o računu
{
javnosti statična praznina Glavni ( )
{
// Ustvari seznam vrste - račun.
Seznam podrobnosti = novo Seznam ( ) ;
// Dodajte 5 zapisov na seznam.
podrobnosti . Dodaj ( novo račun { Acc_ID = 1 , Ime računa = 'Linux' , Industrija = 'Izobraževanje' ,Prihodek = 2500 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 2 , Ime računa = 'Python' , Industrija = 'Tabor' ,Prihodek = 10000 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 3 , Ime računa = 'Java' , Industrija = 'Izobraževanje' ,Prihodek = 500 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 4 , Ime računa = '.MREŽA' , Industrija = 'usposabljanje' ,Prihodek = 2080 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 5 , Ime računa = 'Oracle' , Industrija = 'zaposlitev' ,Prihodek = 2090 } ) ;

// Ustvarite slovar z zgornjega seznama s ključem kot Acc_ID.
Slovar accounts_dict = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;
za vsakogar ( KeyValuePair i v accounts_dict )
{
Konzola . WriteLine ( 'Ključ:' + jaz . Ključ + '-->  Ime-računa :' + jaz . Vrednost . Ime računa
+ 'Panoga računa:' + jaz . Vrednost . Industrija
+ 'Prihodek računa:' + jaz . Vrednost . Prihodki ) ;
}

}
}

// Ustvari razred z imenom - račun s štirimi atributi
javnosti razred račun
{
javnosti int Acc_ID { dobiti ; set ; }
javnosti vrvica Ime računa { dobiti ; set ; }
javnosti vrvica Industrija { dobiti ; set ; }
javnosti int Prihodki { dobiti ; set ; }
}

Izhod:

Pojasnilo:

Tukaj ustvarimo slovar s ključem kot Acc_ID. To deluje kot ključ za vsak zapis v slovarju, ki smo ga ustvarili s seznama. Po tem uporabimo zanko »foreach«, da pridobimo ključe in vrednosti (z atributi) z uporabo lastnosti ključa in vrednosti.

Primer 3: Podvojeni ključi – ArgumentException

Ustvarite seznam z dvema zapisoma in ga poskusite pretvoriti v slovar s ključem Acc_ID.

uporabo Sistem ;
uporabo System.Linq ;
uporabo System.Collections.Generic ;

razred Podatki o računu
{
javnosti statična praznina Glavni ( )
{
// Ustvari seznam vrste - račun.
Seznam podrobnosti = novo Seznam ( ) ;
// Dodajte 2 zapisa na seznam.
podrobnosti . Dodaj ( novo račun { Acc_ID = 1 , Ime računa = 'Linux' , Industrija = 'Izobraževanje' ,Prihodek = 2500 } ) ;
podrobnosti . Dodaj ( novo račun { Acc_ID = 1 , Ime računa = 'Python' , Industrija = 'Tabor' ,Prihodek = 10000 } ) ;

// Poskusite ustvariti slovar z zgornjega seznama s ključem kot Acc_ID.
Slovar accounts_dict = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;

}
}

// Ustvari razred z imenom - račun s štirimi atributi
javnosti razred račun
{
javnosti int Acc_ID { dobiti ; set ; }
javnosti vrvica Ime računa { dobiti ; set ; }
javnosti vrvica Industrija { dobiti ; set ; }
javnosti int Prihodki { dobiti ; set ; }
}

Izjema:

Sproži se neobravnavana izjema, ki je System.ArgumentException, ker je ključ podvojen (1) v obeh Acc_ID-jih.

Primer 4: Ničelni vir – ArgumentNullException

Ustvarite seznam z vrsto »Račun« in mu dodelite nič. Poskusite ustvariti slovar iz prejšnjega seznama s ključem kot Acc_ID.

uporabo Sistem ;
uporabo System.Linq ;
uporabo System.Collections.Generic ;

razred Podatki o računu
{
javnosti statična praznina Glavni ( )
{
// Ustvarite seznam vrste – Račun in mu dodelite ničelno vrednost.
Seznam podrobnosti = nič ;

// Poskusite ustvariti slovar z zgornjega seznama s ključem kot Acc_ID.
Slovar accounts_dict = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;

}
}

// Ustvari razred z imenom - račun s štirimi atributi
javnosti razred račun
{
javnosti int Acc_ID { dobiti ; set ; }
javnosti vrvica Ime računa { dobiti ; set ; }
javnosti vrvica Industrija { dobiti ; set ; }
javnosti int Prihodki { dobiti ; set ; }
}

Izjema:

Sproži se neobravnavana izjema, ki je System.ArgumentNullException, ker je seznam ničelni.

Zaključek

Naučili smo se, kako ustvariti slovar iz IEnumerable (tukaj je seznam) z uporabo metode ToDictionary() v C# LINQ. Ta metoda je lahko preobremenjena na dva načina. Obe metodi smo obravnavali s primeri. Izvedeli smo tudi dva izjemna primera, ki ju sproži ta metoda, ko je izvor podatkov/sezbirnik ključev/selektor elementov nič in so ključi podvojeni.