C# ToDictionary metodas

C Todictionary Metodas



Funkcija ToDictionary C# yra LINQ plėtinio funkcija, leidžianti paversti duomenų rinkinį į žodyną, kuris suteikia aiškų ir praktišką būdą susieti objektus su skirtingais raktais ir susijusiomis reikšmėmis. Tam reikalingi du argumentai, du delegatai arba lambda išraiškos, vienas skirtas pasirinkti raktą ir papildomas kiekvieno kolekcijos objekto vertei pasirinkti. Šiame straipsnyje mes naudosime keletą C# kodo pavyzdžių, kad parodytume ToDictionary funkcijos naudojimą.

Sintaksė:

Išskaidykime ir supraskime kiekvieną komponentą, pateiktą šioje funkcijos C# ToDictionary sintaksėje po vieną:



buvo diktas = kolekcija. ToDictionary ( rakto parinkiklis , elementų parinkiklis ) ;
  • Raktinis žodis „var“ atmetamas čia, siekiant apibrėžti gauto „dikto“ žodyno tipo kategoriją. Daugeliu atvejų tai yra žodynas, kur K yra rakto tipas, o V yra žodyno reikšmės tipo kategorija.
  • Elementas „Collection“ reiškia šaltinio rinkinį, kurį norite konvertuoti į „dikto“ žodyną. Tai gali būti bet kuri klasė, įgyvendinanti IEnumerable sąsają, pvz., sąrašas, masyvas arba užklausos rezultatas.
  • Raktinis žodis „keySelector“ yra deleguotojo arba lambda išraiška, nurodanti, kaip išgauti raktą iš kiekvieno kolekcijos elemento. Kaip argumentą jis gauna elementą iš rinkinio ir grąžina pagrindinę to elemento vertę. Raktas turi būti unikalus kiekvienam kolekcijos elementui, nes žodynuose negali būti pasikartojančių raktų.
  • Raktinis žodis „elementSelector“ nurodo deleguotojo arba lambda išraišką, kuri nurodo, kaip išgauti kiekvieno rinkinio elemento vertę. Jis taip pat gauna kolekcijos elementą kaip argumentą ir pateikia to elemento vertę.

Įvykdę funkciją „ToDictionary“, turėsite naują žodyno objektą, kuriame kiekvienas kolekcijos elementas bus pavaizduotas kaip raktų ir reikšmių pora.







1 pavyzdys:

Pradėkime iš naujo šį vadovą, pateikdami kodo pavyzdį, parodydami „ToDictionary“ funkcijos naudojimą C#. Pereikime tai žingsnis po žingsnio.



Kodas prasideda importuojamomis reikiamomis vardų erdvėmis: System, System.Collections.Generic ir System.Linq. Šiose vardų erdvėse pateikiamos būtinos klasės ir plėtinių metodai darbui su kolekcijomis ir LINQ. Apibrėžiama „Dummy“ klasė, kurioje yra šios C# programos „Pagrindinis“ metodas.



„Pagrindinio“ metodo viduje sukuriamas sąrašas pavadinimu „L“. Šiame sąraše yra trys eilutės elementai, kurie žymi skirtingų vartotojo pasirinktų kvepalų pavadinimus. ToDictionary metodas vadinamas „L“ sąrašu. Jis paverčia sąrašą į žodyną. Kiekvienas sąrašo eilutės elementas yra ir raktas, ir kaip reikšmė gautame žodyne.





Žodynas sukuriamas naudojant mažųjų ir mažųjų raidžių palyginimą, naudojant parametrą StringComparer.OrdinalIgnoreCase, kuris pirmiausia naudojamas nurodyti palyginimą, kuriame nėra didžiųjų ir mažųjų raidžių, tikrinant, ar nėra raktų. Teiginys „if“ patikrina, ar žodyne yra „bombshell“ klavišas, ignoruojant jo didžiąją ir mažąją raidę. Jei raktas rastas, kodo fragmentas skiltyje „jei“ bus apdorotas. „Jei“ bloke vykdomas „Console.WriteLine“ („Bombshell egzistuoja“) sakinys, kuris išspausdina pranešimą „Bombshell egzistuoja“ konsolėje.

naudojant Sistemą ;

naudojant Sistemą. Kolekcijos . Bendras ;

naudojant Sistemą. Linq ;

klasės manekenas

{

statinis tuštuma Pagrindinis ( )

{

Sąrašas < styga > L = naujas sąrašas < styga > ( ) { 'BlackOpium' , 'Bomba' , 'GucciFlora' } ;

buvo kvepalai = L. ToDictionary ( x => x , x => tiesa , StringComparer. OrdinalIgnoreCase ) ;

jeigu ( Kvepalai. ContainsKey ( 'bomba' ) )

{

Konsolė. WriteLine ( 'Bomba egzistuoja' ) ;

}

}

}

Kadangi žodynas sukurtas lyginant didžiąsias ir mažąsias raides, klavišas „bombshell“ atitinka tikrąjį „Bombshell“ klavišą žodyne. Dėl to konsolėje atspausdinamas pranešimas „Bombshell egzistuoja“, kaip parodyta toliau pateiktame pridedamame išvesties paveikslėlyje:



2 pavyzdys:

Ankstesniame kodo pavyzdyje parodėme, kaip paprastą rinkinį galima konvertuoti į žodyną naudojant funkciją ToDictionary. Dabar pereisime prie šiek tiek išplėstinio C# kodo pavyzdžio, kad parodytume, kaip naudojama C# ToDictionary funkcija. Išskaidykime kodą eilutę po eilutės.

Šis iliustracijos kodo fragmentas pradedamas įvedant tas pačias privalomas vardų sritis: System, System.Collections.Generic ir System.Linq. Šiose vardų erdvėse pateikiamos reikalingos klasės ir plėtinių metodai, skirti darbui su kolekcijomis ir LINQ šiam kodo pavyzdžiui. Apibrėžiama „Manekeno“ klasė, kuri yra įėjimo taškas.

C# kalbos „Pagrindinio“ metodo viduje sudaromas sąrašas pavadinimu „L“. Šiame sąraše yra trys „Duomenų“ klasės objektai, kurie reprezentuoja skirtingus kosmetikos gaminius su jų kainomis ir prekių ženklais. Kiekvienas duomenų objektas inicijuojamas naudojant objekto inicijavimo sintaksę. Kiekvieno objekto savybės „Kaina“ ir „Prekės ženklas“ nustatomos konkrečiomis reikšmėmis.

Čia ateina ToDictionary metodas. Čia jis vadinamas „L“ sąraše. Jis paverčia sąrašą į žodyną, kuriame kaip raktas naudojama ypatybė „Kaina“, o kaip vertė – „Prekės ženklas“. Gautas žodynas priskiriamas kintamajam „Dic“, kaip nurodyta toliau pateiktame kodo fragmente. „Foreach“ kilpa išjungiama, kad būtų iškviečiamos raktų ir reikšmių poros „Dic“ žodyne.

Ciklo viduje kiekvienos poros raktas ir reikšmė pasiekiami naudojant „Key“ ir „Value“ ypatybes, esančias KeyValuePair struktūroje. Funkcijos Console.WriteLine sakinys atspausdina kiekvieną rakto-reikšmių porą konsolėje. Išvestis suformatuojama naudojant eilutės interpoliaciją, kad kaina ir prekės ženklo informacija būtų rodoma atskirai.

Čia „Data“ klasė apibrėžiama dviem savybėmis: „Price“ (sveikas skaičius, nurodantis kosmetikos gaminio kainą) ir „Brand“ (eilutė, nurodanti prekės prekės pavadinimą).

naudojant Sistemą ;

naudojant Sistemą. Kolekcijos . Bendras ;

naudojant Sistemą. Linq ;

klasės manekenas

{

statinis tuštuma Pagrindinis ( )

{

Sąrašas < Duomenys > L = naujas sąrašas < Duomenys > ( )

{

nauji duomenys { Kaina = 13 000 , Prekės ženklas = 'Huda gražuolė' } ,

nauji duomenys { Kaina = 15 000 , Prekės ženklas = 'Charlotte Telburry' } ,

nauji duomenys { Kaina = 11 000 , Prekės ženklas = 'Nars' }

} ;

Žodynas < tarpt , styga > gruod = L. ToDictionary ( p => p. Kaina , p => p. Prekės ženklas ) ;

kiekvienam ( var v in Dic )

{

Konsolė. WriteLine ( $ 'Kaina: {v.Key}, prekės ženklas: {v.Value}' ) ;

}

}

}

klasė Duomenys

{

viešas tarpt Kaina { gauti ; rinkinys ; }

viešoji eilutė Prekės ženklas { gauti ; rinkinys ; }

}

Kai kodas vykdomas, jis sukuria duomenų objektų sąrašą, paverčia sąrašą į žodyną naudodamas ToDictionary metodą, o tada rodo žodyno raktų ir reikšmių poras, naudodamas „foreach“ kilpą.

Šio kodo pavyzdžio išvestis pateikiama toliau. Rodomos žodyne saugomų kosmetikos gaminių kainos ir prekių ženklai pagal konkrečias savybes, todėl patogu tvarkyti ir pasiekti duomenis raktų-reikšmių poromis. Ankstesnio kodo išvestis rodo tris žodyno įrašus:

Išvada

Šiame C# vadove buvo parodytas C# ToDictionary metodo naudojimas naudojant kai kurias pagrindines ir tikslias kodo iliustracijas. Siūlydamas aiškų ir išraiškingą mechanizmą raktų ir reikšmių poroms apibūdinti, ToDictionary metodas leidžia lengviau paversti rinkinį žodynu. Tai stipri C# programa, skirta manipuliuoti ir transformuoti duomenis.