Metoda C# ToDictionary

Metoda C Todictionary



Funkcija ToDictionary v C# je razširitvena funkcija LINQ, ki vam omogoča pretvorbo zbirke podatkov v slovar, ki ponuja jasen in praktičen način za preslikavo entitet v različne ključe in povezane vrednosti. Zahteva dva argumenta, dva delegata ali lambda izraza, enega za izbiro ključa in dodatnega za izbiro vrednosti za vsak predmet v zbirki. V tem članku bomo uporabili nekaj primerov kode C# za predstavitev uporabe funkcije ToDictionary.

Sintaksa:

Razčlenimo in razumejmo vsako komponento, ki je na voljo v naslednji sintaksi funkcije C# ToDictionary eno za drugo:



je bil dikt = zbirka. ToDictionary ( keySelector , elementSelector ) ;
  • Ključna beseda »var« je tukaj opuščena, da bi definirala kategorijo vrste nastalega slovarja »dict«. V večini primerov je to Dictionary, kjer je K tip ključa, V pa kategorija tipa vrednosti slovarja.
  • Element »collection« predstavlja izvorno zbirko, ki jo želite pretvoriti v slovar »dict«. Lahko je kateri koli razred, ki implementira vmesnik IEnumerable, kot je seznam, niz ali rezultat poizvedbe.
  • Ključna beseda “keySelector” je delegat ali lambda izraz, ki določa, kako ekstrahirati ključ iz vsakega elementa v zbirki. Kot argument pridobi element iz zbirke in vrne vrednost ključa za ta element. Ključ mora biti edinstven za vsako postavko v zbirki, saj slovarji ne morejo imeti podvojenih ključev.
  • Ključna beseda 'elementSelector' se nanaša na delegat ali lambda izraz, ki določa, kako izvleči vrednost iz vsake postavke v zbirki. Prav tako dobi element zbirke kot argument in vrne vrednost za ta element.

Po izvedbi funkcije ToDictionary boste imeli nov objekt slovarja, kjer je vsaka postavka iz zbirke predstavljena kot par ključ-vrednost.







Primer 1:

Začnimo s tem vodnikom na novo, tako da s primerom kode predstavimo uporabo funkcije ToDictionary v C#. Pojdimo skozi to korak za korakom.



Koda se začne z uvozom zahtevanih imenskih prostorov: System, System.Collections.Generic in System.Linq. Ti imenski prostori nudijo potrebne razrede in razširitvene metode za delo z zbirkami in LINQ. Definiran je razred »Dummy«, ki vsebuje metodo »Main« tega programa C#.



Znotraj metode »Main« se ustvari seznam z imenom »L«. Ta seznam vsebuje tri elemente nizov, ki predstavljajo imena različnih parfumov po izbiri uporabnika. Metoda ToDictionary je priklicana na seznamu »L«. Seznam pretvori v slovar. Vsak element niza na seznamu služi kot ključ in vrednost v nastalem slovarju.





Slovar je ustvarjen s primerjavo ključev, ki ne razlikuje med velikimi in malimi črkami, z uporabo parametra StringComparer.OrdinalIgnoreCase, ki se uporablja predvsem za določanje primerjave, ki ne razlikuje med velikimi in malimi črkami pri preverjanju obstoja ključev. Izjava »if« preveri, ali slovar vsebuje ključ »bomba«, pri tem pa ne upošteva velikih in malih črk. Če je ključ najden, bo delček kode v razdelku »if« obdelan. Znotraj bloka »if« se izvede stavek Console.WriteLine(»Bombshell exists«), ki natisne sporočilo »Bombshell exists« na konzolo.

z uporabo sistema ;

z uporabo sistema. Zbirke . Generično ;

z uporabo sistema. Linq ;

razred Dummy

{

statična praznina Glavni ( )

{

Seznam < vrvica > L = nov seznam < vrvica > ( ) { 'Črni opij' , 'bomba' , 'GucciFlora' } ;

je bil Parfum = L. ToDictionary ( x => x , x => prav , StringComparer. OrdinalIgnoreCase ) ;

če ( Parfum. ContainsKey ( 'bomba' ) )

{

Konzola. WriteLine ( 'Bomba obstaja' ) ;

}

}

}

Ker je slovar ustvarjen s primerjavo, ki ne razlikuje med velikimi in velikimi črkami, se ključ »bomba« ujema z dejanskim ključem »bomba« v slovarju. Posledično se na konzoli natisne sporočilo »Bombshell obstaja«, kot je prikazano na naslednji priloženi izhodni sliki:



Primer 2:

V prejšnjem primeru kode smo pokazali, kako je mogoče preprosto zbirko pretvoriti v slovar prek funkcije ToDictionary. Zdaj se bomo premaknili k nekoliko naprednejšemu primeru kode C# za predstavitev uporabe funkcije C# ToDictionary. Razčlenimo kodo po vrsticah.

Ta ilustracijski delček kode se začne z vnosom istih obveznih imenskih prostorov: System, System.Collections.Generic in System.Linq. Ti imenski prostori zagotavljajo zahtevane razrede in razširitvene metode za delo z zbirkami in LINQ za ta primer kode. Definiran je razred »Dummy«, ki je vstopna točka.

Znotraj metode »Main« jezika C# se oblikuje seznam z imenom »L«. Ta seznam vsebuje tri objekte razreda »Podatki«, ki predstavljajo različne kozmetične izdelke z njihovimi cenami in blagovnimi znamkami. Vsak podatkovni objekt se inicializira s sintakso inicializatorja objekta. Lastnosti »Cena« in »Blagovna znamka« vsakega predmeta so nastavljene s posebnimi vrednostmi.

Tukaj je metoda ToDictionary. Imenuje se tukaj na seznamu 'L'. Seznam pretvori v slovar, kjer je lastnost »Cena« uporabljena kot ključ, lastnost »Brand« pa kot vrednost. Nastali slovar je dodeljen spremenljivki »Dic«, kot je omenjeno v naslednjem delčku kode. Zanka »foreach« je opuščena za klicanje parov ključ-vrednost v slovarju »Dic«.

Znotraj zanke se do ključa in vrednosti vsakega para dostopa z lastnostma »Key« in »Value« strukture KeyValuePair. Stavek funkcije Console.WriteLine natisne vsak par ključ-vrednost na konzolo. Izhod je oblikovan z uporabo interpolacije nizov za ločen prikaz cene in informacij o blagovni znamki.

Tu je razred »Podatki« definiran z dvema lastnostma: »Cena« (celo število, ki predstavlja ceno kozmetičnega izdelka) in »Blagovna znamka« (niz, ki predstavlja blagovno znamko izdelka).

z uporabo sistema ;

z uporabo sistema. Zbirke . Generično ;

z uporabo sistema. Linq ;

razred Dummy

{

statična praznina Glavni ( )

{

Seznam < podatki > L = nov seznam < podatki > ( )

{

novi podatki { Cena = 13000 , Znamka = 'Huda lepotica' } ,

novi podatki { Cena = 15000 , Znamka = 'Charlotte Telburry' } ,

novi podatki { Cena = 11000 , Znamka = 'Nars' }

} ;

Slovar < int , vrvica > dec = L. ToDictionary ( str => str. Cena , str => str. Znamka ) ;

za vsakogar ( var v v Dic )

{

Konzola. WriteLine ( $ 'Cena: {v.Key}, Znamka: {v.Value}' ) ;

}

}

}

Podatki razreda

{

javnosti int Cena { dobiti ; set ; }

javni niz Brand { dobiti ; set ; }

}

Ko se koda izvede, ustvari seznam podatkovnih objektov, pretvori seznam v slovar z metodo ToDictionary in nato prikaže pare ključ-vrednost slovarja z uporabo zanke »foreach«.

Izhod za ta primer kode je naveden v nadaljevanju. Prikazuje cene in blagovne znamke kozmetičnih izdelkov, ki so shranjeni v slovarju na podlagi določenih lastnosti, kar zagotavlja priročen način za organiziranje in dostop do podatkov v parih ključ-vrednost. Izhod prejšnje kode prikazuje tri zapise za slovar:

Zaključek

Ta vodnik za C# je prikazal uporabo metode C# ToDictionary prek nekaj osnovnih in natančnih ilustracij kode. S tem, ko ponuja jasen in izrazit mehanizem za opisovanje parov ključ-vrednost, metoda ToDictionary olajša pretvorbo zbirke v slovar. Je močan pripomoček C# za manipulacijo in pretvorbo podatkov.