C# ToDictionary metóda

C Todictionary Metoda



Funkcia ToDictionary v C# je funkcia rozšírenia LINQ, ktorá vám umožňuje transformovať zhromažďovanie údajov na slovník, ktorý ponúka jasný a praktický spôsob mapovania entít na odlišné kľúče a súvisiace hodnoty. Vyžaduje dva argumenty, dva delegáty alebo výrazy lambda, jeden na výber kľúča a ďalší na výber hodnoty pre každý objekt v kolekcii. V tomto článku použijeme niekoľko príkladov kódu C# na demonštráciu použitia funkcie ToDictionary.

Syntax:

Poďme si rozobrať a pochopiť každý komponent, ktorý je poskytnutý v rámci nasledujúcej syntaxe funkcie C# ToDictionary jeden po druhom:



bol diktát = zber. ToDictionary ( keySelector , elementSelector ) ;
  • Kľúčové slovo „var“ je tu odstránené, aby sa definovala kategória typu výsledného slovníka „diktát“. Vo väčšine prípadov je to Slovník, kde K je typ kľúča a V je kategória typu hodnoty slovníka.
  • Element „collection“ predstavuje zdrojovú kolekciu, ktorú chcete previesť na slovník „diktát“. Môže to byť akákoľvek trieda, ktorá implementuje rozhranie IEnumerable, ako napríklad zoznam, pole alebo výsledok dotazu.
  • Kľúčové slovo „keySelector“ je delegát alebo výraz lambda, ktorý určuje, ako extrahovať kľúč z každej položky v kolekcii. Získa prvok z kolekcie ako argument a vráti hodnotu kľúča pre túto položku. Kľúč by mal byť jedinečný pre každú položku v kolekcii, pretože slovníky nemôžu mať duplicitné kľúče.
  • Kľúčové slovo „elementSelector“ odkazuje na delegát alebo výraz lambda, ktorý určuje, ako extrahovať hodnotu z každej položky v kolekcii. Získa tiež prvok kolekcie ako argument a získa hodnotu pre túto položku.

Po vykonaní funkcie ToDictionary budete mať nový objekt slovníka, kde je každá položka z kolekcie reprezentovaná ako pár kľúč – hodnota.







Príklad 1:

Poďme na nový začiatok tejto príručky demonštrovaním použitia funkcie ToDictionary v C# pomocou príkladu kódu. Poďme si to prejsť krok za krokom.



Kód začína importovanými požadovanými mennými priestormi: System, System.Collections.Generic a System.Linq. Tieto priestory názvov poskytujú potrebné triedy a metódy rozšírenia na prácu s kolekciami a LINQ. Je definovaná trieda „Dummy“, ktorá obsahuje metódu „Main“ tohto programu C#.



V rámci metódy „Main“ sa vytvorí zoznam s názvom „L“. Tento zoznam obsahuje tri prvky reťazca, ktoré predstavujú názvy rôznych parfumov podľa výberu používateľa. Metóda ToDictionary sa volá v zozname „L“. Prevedie zoznam na slovník. Každý prvok reťazca v zozname slúži ako kľúč aj hodnota vo výslednom slovníku.





Slovník je vytvorený s porovnávaním kľúčov bez ohľadu na veľkosť písmen pomocou parametra StringComparer.OrdinalIgnoreCase, ktorý sa primárne používa na určenie porovnania bez ohľadu na veľkosť písmen pri kontrole existencie kľúčov. Príkaz „if“ kontroluje, či slovník obsahuje kľúč „bomba“, pričom ignoruje jeho veľkosť. Ak sa kľúč nájde, spracuje sa útržok kódu v sekcii „if“. Vo vnútri bloku “if” sa vykoná príkaz Console.WriteLine(“Bombshell exists”), ktorý vypíše správu “Bombshell exists” do konzoly.

pomocou systému ;

pomocou systému. zbierky . Generic ;

pomocou systému. Linq ;

trieda Dummy

{

statické neplatné Hlavná ( )

{

Zoznam < reťazec > L = nový zoznam < reťazec > ( ) { 'BlackOpium' , 'Bomba' , 'GucciFlora' } ;

bol Parfum = L. ToDictionary ( X => X , X => pravda , StringComparer. OrdinalIgnoreCase ) ;

ak ( Parfum. Obsahuje kľúč ( 'bomba' ) )

{

Konzola. WriteLine ( 'Bomba existuje' ) ;

}

}

}

Keďže slovník je vytvorený s porovnaním bez ohľadu na malé a veľké písmená, kľúč „bomba“ sa zhoduje so skutočným kľúčom „Bomba“ v slovníku. V dôsledku toho sa na konzole vytlačí správa „Bomba existuje“, ako je zobrazené na nasledujúcom priloženom výstupnom obrázku:



Príklad 2:

V predchádzajúcom príklade kódu sme demonštrovali, ako možno jednoduchú kolekciu previesť na slovník pomocou funkcie ToDictionary. Teraz prejdeme k trochu pokročilému príkladu kódu C# na demonštráciu použitia funkcie C# ToDictionary. Rozoberme kód riadok po riadku.

Tento ilustračný útržok kódu začína uvedením rovnakých povinných menných priestorov: System, System.Collections.Generic a System.Linq. Tieto priestory názvov poskytujú požadované triedy a metódy rozšírenia na prácu s kolekciami a LINQ pre tento príklad kódu. Je definovaná trieda „Dummy“, ktorá je vstupným bodom.

Vo vnútri metódy „Main“ jazyka C# sa vytvorí zoznam s názvom „L“. Tento zoznam obsahuje tri objekty triedy „Data“, ktoré predstavujú rôzne kozmetické produkty s ich cenami a značkami. Každý dátový objekt je inicializovaný pomocou syntaxe inicializátora objektu. Vlastnosti „Cena“ a „Značka“ každého objektu sú nastavené na špecifické hodnoty.

Tu prichádza metóda ToDictionary. Tu sa nazýva v zozname „L“. Konvertuje zoznam na slovník, kde sa ako kľúč používa vlastnosť „Cena“ a ako hodnota sa používa vlastnosť „Značka“. Výsledný slovník je priradený k premennej „Dic“, ako je uvedené v nasledujúcom poskytnutom zlomku kódu. Slučka „foreach“ sa odvolá na volanie párov kľúč-hodnota v slovníku „Dic“.

Vo vnútri cyklu sú kľúč a hodnota každého páru prístupné pomocou vlastností „Kľúč“ a „Hodnota“ štruktúry KeyValuePair. Príkaz funkcie Console.WriteLine vytlačí každý pár kľúč – hodnota do konzoly. Výstup je naformátovaný pomocou interpolácie reťazca, aby sa cena a informácie o značke zobrazovali oddelene.

Trieda „Údaje“ je tu definovaná s dvoma vlastnosťami: „Cena“ (celé číslo, ktoré predstavuje cenu kozmetického výrobku) a „Značka“ (reťazec, ktorý predstavuje názov značky výrobku).

pomocou systému ;

pomocou systému. zbierky . Generic ;

pomocou systému. Linq ;

trieda Dummy

{

statické neplatné Hlavná ( )

{

Zoznam < Údaje > L = nový zoznam < Údaje > ( )

{

nové údaje { cena = 13 000 , Značka = 'Huda Beauty' } ,

nové údaje { cena = 15 000 , Značka = 'Charlotte Telburry' } ,

nové údaje { cena = 11 000 , Značka = 'Nars' }

} ;

Slovník < int , reťazec > dec = L. ToDictionary ( p => p. cena , p => p. Značka ) ;

pre každý ( var v v Dic )

{

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

}

}

}

trieda Údaje

{

verejnosti int cena { dostať ; nastaviť ; }

verejný reťazec Značka { dostať ; nastaviť ; }

}

Keď sa kód spustí, vytvorí zoznam dátových objektov, skonvertuje zoznam na slovník pomocou metódy ToDictionary a potom zobrazí páry kľúč – hodnota slovníka pomocou slučky „foreach“.

Výstup pre tento príklad kódu je uvedený nižšie. Zobrazuje ceny a značky kozmetických produktov, ktoré sú uložené v slovníku na základe špecifických vlastností, a poskytuje pohodlný spôsob usporiadania a prístupu k údajom v pároch kľúč – hodnota. Výstup predchádzajúceho kódu zobrazuje tri záznamy pre slovník:

Záver

Táto príručka C# demonštrovala použitie metódy C# ToDictionary prostredníctvom niekoľkých základných a presných ilustrácií kódu. Tým, že metóda ToDictionary ponúka jasný a expresívny mechanizmus na opis párov kľúč – hodnota, uľahčuje premenu zbierky na slovník. Je to silný nástroj C# na manipuláciu a transformáciu údajov.