C# ToDictionary-metoden

C Todictionary Metoden



ToDictionary-funksjonen i C# er en LINQ-utvidelsesfunksjon som lar deg transformere en datainnsamling til en ordbok som tilbyr en klar og praktisk måte å kartlegge enhetene til distinkte nøkler og relaterte verdier. Det krever to argumenter, to delegater eller lambda-uttrykk, ett for å velge nøkkelen og et ekstra for å velge verdien for hvert objekt i samlingen. I denne artikkelen vil vi bruke noen C#-kodeeksempler for å demonstrere bruken av ToDictionary-funksjonen.

Syntaks:

La oss bryte ned og forstå hver komponent som leveres innenfor følgende syntaks til C# ToDictionary-funksjonen én etter én:



var dikt = samling. TilDictionary ( nøkkelvelger , elementVelger ) ;
  • Nøkkelordet 'var' er kastet av her for å definere typekategorien til den resulterende 'dict'-ordboken. I de fleste tilfeller er det Dictionary der K er typen til nøkkelen og V er typekategorien til ordbokverdien.
  • 'Samling'-elementet representerer kildesamlingen som du vil konvertere til en 'dict'-ordbok. Det kan være en hvilken som helst klasse som implementerer IEnumerable-grensesnittet, for eksempel en liste, en matrise eller et spørringsresultat.
  • Nøkkelordet 'keySelector' er et delegat- eller lambda-uttrykk som spesifiserer hvordan nøkkelen skal trekkes ut fra hvert element i samlingen. Den får et element fra samlingen som et argument og gir tilbake nøkkelverdien for det elementet. Nøkkelen skal være unik for hvert element i samlingen, da ordbøker ikke kan ha dupliserte nøkler.
  • Nøkkelordet 'elementSelector' refererer til et delegat- eller lambda-uttrykk som spesifiserer hvordan verdien skal trekkes ut fra hvert element i samlingen. Den får også et element av samlingen som et argument og gir verdien for den varen.

Etter å ha utført ToDictionary-funksjonen, vil du ha et nytt ordbokobjekt hvor hvert element fra samlingen er representert som et nøkkelverdi-par.







Eksempel 1:

La oss få en ny start på denne veiledningen ved å demonstrere bruken av ToDictionary-funksjonen i C# ved hjelp av et kodeeksempel. La oss gå gjennom det steg for steg.



Koden begynner med at de nødvendige navneområdene importeres: System, System.Collections.Generic og System.Linq. Disse navnerommene gir de nødvendige klassene og utvidelsesmetodene for å jobbe med samlinger og LINQ. Klassen 'Dummy' er definert som inneholder 'Main'-metoden til dette C#-programmet.



Inne i 'Hoved'-metoden opprettes en liste med navnet 'L'. Denne listen inneholder tre strengelementer som representerer navnene på forskjellige parfymer etter brukerens valg. ToDictionary-metoden kalles på 'L'-listen. Den konverterer listen til en ordbok. Hvert strengelement i listen fungerer som både nøkkelen og verdien i den resulterende ordboken.





Ordboken er opprettet med en nøkkelsammenligning uten store og små bokstaver ved å bruke parameteren StringComparer.OrdinalIgnoreCase som primært brukes til å spesifisere en sammenligning uten store og små bokstaver når man sjekker om det finnes nøkler. En 'if'-setning sjekker om ordboken inneholder 'bombshell'-tasten mens den ignorerer store og små bokstaver. Hvis nøkkelen blir funnet, vil kodebiten i «hvis»-delen bli behandlet. Inne i 'if'-blokken kjøres Console.WriteLine('Bombshell exists')-setningen som skriver ut 'Bombshell exists'-meldingen til konsollen.

bruker System ;

bruker System. Samlinger . Generisk ;

bruker System. Linq ;

klasse Dummy

{

statisk tomrom Hoved ( )

{

Liste < streng > L = ny liste < streng > ( ) { 'BlackOpium' , 'bombe' , 'GucciFlora' } ;

var parfyme = L. TilDictionary ( x => x , x => ekte , StringComparer. OrdinalIgnoreCase ) ;

hvis ( Parfyme. InneholderNøkkel ( 'bombe' ) )

{

Konsoll. WriteLine ( 'Bombe finnes' ) ;

}

}

}

Siden ordboken er laget med en sammenligning som ikke skiller mellom store og små bokstaver, samsvarer 'bombshell'-tasten med den faktiske 'Bombshell'-tasten i ordboken. Som et resultat blir meldingen 'Bombshell exists' skrevet ut på konsollen som vist i følgende vedlagte utdatabilde:



Eksempel 2:

I forrige kodeeksempel demonstrerte vi hvordan en enkel samling kan konverteres til en ordbok via ToDictionary-funksjonen. Nå vil vi gå mot et lite avansert kodeeksempel på C# for demonstrasjon av C# ToDictionary-funksjonen. La oss bryte ned koden linje for linje.

Denne illustrasjonskodebiten starter med å bringe inn de samme obligatoriske navneområdene: System, System.Collections.Generic og System.Linq. Disse navnerommene gir de nødvendige klassene og utvidelsesmetodene for å jobbe med samlinger og LINQ for dette kodeeksemplet. Klassen 'Dummy' er definert som er et inngangspunkt.

Inne i 'Hoved'-metoden til C#-språket dannes en liste med navnet 'L'. Denne listen inneholder tre objekter i klassen 'Data' som representerer de forskjellige kosmetiske produktene med deres priser og merker. Hvert dataobjekt initialiseres ved hjelp av objektinitialiseringssyntaksen. Egenskapene 'Pris' og 'Merke' for hvert objekt er satt med spesifikke verdier.

Her kommer ToDictionary-metoden. Det heter her på 'L'-listen. Den konverterer listen til en ordbok der 'Price'-egenskapen brukes som nøkkel og 'Brand'-egenskapen brukes som verdi. Den resulterende ordboken er tilordnet 'Dic'-variabelen som nevnt i følgende kodebit. En 'foreach'-løkke kastes av for å kalle over nøkkelverdi-parene i 'Dic'-ordboken.

Inne i løkken får du tilgang til nøkkelen og verdien til hvert par ved å bruke egenskapene 'Nøkkel' og 'Verdi' til strukturen KeyValuePair. Console.WriteLine-funksjonssetningen skriver ut hvert nøkkelverdi-par til konsollen. Utdataene formateres ved å bruke strenginterpolasjonen for å vise pris- og merkeinformasjon separat.

Her er 'Data'-klassen definert med to egenskaper: 'Price' (et heltall som representerer prisen på et kosmetisk produkt) og 'Brand' (en streng som representerer merkenavnet til et produkt).

bruker System ;

bruker System. Samlinger . Generisk ;

bruker System. Linq ;

klasse Dummy

{

statisk tomrom Hoved ( )

{

Liste < Data > L = ny liste < Data > ( )

{

nye data { Pris = 13000 , Merke = 'Huda Beauty' } ,

nye data { Pris = 15 000 , Merke = 'Charlotte Telburry' } ,

nye data { Pris = 11000 , Merke = 'Nars' }

} ;

Ordbok < int , streng > des = L. ToDictionary ( s => s. Pris , s => s. Merke ) ;

for hver ( var v i Dic )

{

Konsoll. WriteLine ( $ 'Pris: {v.Key}, merke: {v.Value}' ) ;

}

}

}

klasse Data

{

offentlig int Pris { ; sett ; }

offentlig streng Merke { ; sett ; }

}

Når koden kjøres, oppretter den en liste over dataobjekter, konverterer listen til en ordbok ved å bruke ToDictionary-metoden, og viser deretter nøkkelverdi-parene til ordboken ved å bruke 'foreach'-løkken.

Utdataene for dette kodeeksemplet er gitt i det følgende. Den viser prisene og merkene til kosmetiske produkter som er lagret i ordboken basert på spesifikke egenskaper, og gir en praktisk måte å organisere og få tilgang til dataene i nøkkelverdi-par. Utdataene fra forrige kode viser tre poster for ordboken:

Konklusjon

Denne C#-guiden demonstrerte bruken av C# ToDictionary-metoden via noen grunnleggende og presise kodeillustrasjoner. Ved å tilby en klar og uttrykksfull mekanisme for å beskrive nøkkelverdi-parene, gjør ToDictionary-metoden det enklere å gjøre en samling om til en ordbok. Det er et sterkt C#-verktøy for å manipulere og transformere dataene.