Metoda C# ToDictionary

Metoda C Todictionary



Funkcija ToDictionary u C# je funkcija LINQ proširenja koja vam omogućuje transformaciju zbirke podataka u rječnik koji nudi jasan i praktičan način mapiranja entiteta u različite ključeve i povezane vrijednosti. Zahtijeva dva argumenta, dva delegata ili lambda izraza, jedan za odabir ključa i dodatni za odabir vrijednosti za svaki objekt u zbirci. U ovom ćemo članku upotrijebiti neke primjere C# koda kako bismo demonstrirali upotrebu funkcije ToDictionary.

Sintaksa:

Raščlanimo i razumijmo svaku komponentu koja se nalazi unutar sljedeće sintakse funkcije C# ToDictionary jednu po jednu:



bio dikt = kolekcija. ToDictionary ( KeySelector , elementSelector ) ;
  • Ključna riječ 'var' ovdje je odbačena kako bi definirala kategoriju tipa rezultirajućeg rječnika 'dict'. U većini slučajeva to je Rječnik gdje je K tip ključa, a V kategorija tipa vrijednosti rječnika.
  • Element 'collection' predstavlja izvornu zbirku koju želite pretvoriti u 'dict' rječnik. To može biti bilo koja klasa koja implementira sučelje IEnumerable kao što je popis, polje ili rezultat upita.
  • Ključna riječ “keySelector” je delegat ili lambda izraz koji navodi kako izdvojiti ključ iz svake stavke u kolekciji. Dobiva element iz kolekcije kao argument i vraća vrijednost ključa za tu stavku. Ključ bi trebao biti jedinstven za svaku stavku u zbirci, jer rječnici ne mogu imati dvostruke ključeve.
  • Ključna riječ 'elementSelector' odnosi se na delegat ili lambda izraz koji navodi kako izdvojiti vrijednost iz svake stavke u kolekciji. Također dobiva element kolekcije kao argument i daje vrijednost za tu stavku.

Nakon izvršavanja funkcije ToDictionary, imat ćete novi objekt rječnika u kojem je svaka stavka iz zbirke predstavljena kao par ključ-vrijednost.







Primjer 1:

Počnimo iznova s ​​ovim vodičem demonstracijom upotrebe funkcije ToDictionary u C# uz pomoć primjera koda. Prođimo kroz to korak po korak.



Kod počinje uvozom potrebnih imenskih prostora: System, System.Collections.Generic i System.Linq. Ovi prostori imena pružaju potrebne klase i metode proširenja za rad sa zbirkama i LINQ-om. Definirana je “Dummy” klasa koja sadrži “Main” metodu ovog C# programa.



Unutar metode “Main” kreira se popis pod nazivom “L”. Ovaj popis sadrži tri elementa niza koji predstavljaju nazive različitih parfema po izboru korisnika. Metoda ToDictionary poziva se na popisu 'L'. Pretvara popis u rječnik. Svaki element niza na popisu služi i kao ključ i kao vrijednost u rezultirajućem rječniku.





Rječnik se stvara s usporedbom ključeva koja ne razlikuje velika i mala slova pomoću parametra StringComparer.OrdinalIgnoreCase koji se prvenstveno koristi za određivanje usporedbe bez obzira na velika i mala slova prilikom provjere postojanja ključeva. Izjava 'if' provjerava sadrži li rječnik ključ 'bomba', a zanemaruje velika i mala slova. Ako je ključ pronađen, obradit će se isječak koda unutar odjeljka 'if'. Unutar bloka “if” izvodi se naredba Console.WriteLine(“Bombshell exists”) koja na konzolu ispisuje poruku “Bombshell postoji”.

pomoću sustava ;

pomoću sustava. Zbirke . Generički ;

pomoću sustava. Linq ;

klasa Dummy

{

statički poništiti Glavni ( )

{

Popis < niz > L = novi popis < niz > ( ) { 'Crni opijum' , 'Bomba' , 'GucciFlora' } ;

bio je Parfem = L. ToDictionary ( x => x , x => pravi , StringComparer. OrdinalIgnoreCase ) ;

ako ( Parfem. SadržiKljuč ( 'bomba' ) )

{

Konzola. WriteLine ( 'Bomba postoji' ) ;

}

}

}

Budući da je rječnik stvoren usporedbom koja ne razlikuje velika i mala slova, ključ 'bomba' odgovara stvarnom ključu 'bomba' u rječniku. Kao rezultat toga, poruka 'Bombshell postoji' ispisuje se na konzoli kao što je prikazano na sljedećoj priloženoj izlaznoj slici:



Primjer 2:

Unutar prethodnog primjera koda pokazali smo kako se jednostavna zbirka može pretvoriti u rječnik putem funkcije ToDictionary. Sada ćemo krenuti prema malo naprednijem primjeru koda C# za demonstraciju korištenja funkcije C# ToDictionary. Raščlanimo kod redak po redak.

Ovaj ilustracijski isječak koda počinje uvođenjem istih obaveznih imenskih prostora: System, System.Collections.Generic i System.Linq. Ovi prostori imena pružaju potrebne klase i metode proširenja za rad sa zbirkama i LINQ-om za ovaj primjer koda. Definirana je klasa 'Dummy' koja je ulazna točka.

Unutar “Main” metode jezika C# formira se lista pod nazivom “L”. Ovaj popis sadrži tri objekta klase 'Podaci' koja predstavlja različite kozmetičke proizvode s njihovim cijenama i markama. Svaki podatkovni objekt se inicijalizira pomoću sintakse inicijalizatora objekta. Svojstva 'Cijena' i 'Brand' svakog objekta postavljena su s određenim vrijednostima.

Ovdje dolazi metoda ToDictionary. Ovdje se zove na listi 'L'. Pretvara popis u rječnik gdje se svojstvo 'Cijena' koristi kao ključ, a svojstvo 'Brand' kao vrijednost. Rezultirajući rječnik dodjeljuje se varijabli 'Dic' kao što je spomenuto u sljedećem isječku koda. Petlja 'foreach' je odbačena za pozivanje parova ključ-vrijednost u rječniku 'Dic'.

Unutar petlje, ključu i vrijednosti svakog para pristupa se korištenjem svojstava 'Key' i 'Value' strukture KeyValuePair. Izjava funkcije Console.WriteLine ispisuje svaki par ključ-vrijednost na konzolu. Izlaz je formatiran korištenjem interpolacije niza za odvojeni prikaz cijene i informacija o marki.

Ovdje je klasa “Data” definirana s dva svojstva: “Price” (cijeli broj koji predstavlja cijenu kozmetičkog proizvoda) i “Brand” (string koji predstavlja naziv robne marke proizvoda).

pomoću sustava ;

pomoću sustava. Zbirke . Generički ;

pomoću sustava. Linq ;

klasa Dummy

{

statički poništiti Glavni ( )

{

Popis < Podaci > L = novi popis < Podaci > ( )

{

novi podaci { Cijena = 13000 , Marka = 'Huda ljepotica' } ,

novi podaci { Cijena = 15000 , Marka = 'Charlotte Telburry' } ,

novi podaci { Cijena = 11000 , Marka = 'Nars' }

} ;

Rječnik < int , niz > pro = L. ToDictionary ( str => str. Cijena , str => str. Marka ) ;

za svakoga ( var v u Dic )

{

Konzola. WriteLine ( $ 'Cijena: {v.Key}, robna marka: {v.Value}' ) ;

}

}

}

razred Podaci

{

javnost int Cijena { dobiti ; postaviti ; }

javni niz Brand { dobiti ; postaviti ; }

}

Kada se kôd izvrši, stvara popis podatkovnih objekata, pretvara popis u rječnik pomoću metode ToDictionary, a zatim prikazuje parove ključ-vrijednost rječnika pomoću petlje 'foreach'.

Izlaz za ovaj primjer koda dan je u nastavku. Prikazuje cijene i marke kozmetičkih proizvoda koji su pohranjeni u rječniku na temelju specifičnih svojstava, pružajući prikladan način organiziranja i pristupa podacima u parovima ključ-vrijednost. Izlaz prethodnog koda prikazuje tri zapisa za rječnik:

Zaključak

Ovaj vodič za C# demonstrirao je korištenje metode C# ToDictionary putem nekih osnovnih i preciznih ilustracija koda. Nudeći jasan i izražajan mehanizam za opisivanje parova ključ-vrijednost, metoda ToDictionary olakšava pretvaranje zbirke u rječnik. To je snažan C# uslužni program za manipulaciju i transformaciju podataka.