C# ToDictionary-methode

C Todictionary Methode



De ToDictionary-functie in C# is een LINQ-extensiefunctie waarmee u een gegevensverzameling kunt omzetten in een woordenboek, dat een duidelijke en praktische manier biedt om de entiteiten toe te wijzen aan verschillende sleutels en gerelateerde waarden. Er zijn twee argumenten nodig, twee afgevaardigden of lambda-expressies, één voor het kiezen van de sleutel en een extra voor het kiezen van de waarde voor elk object in de verzameling. In dit artikel zullen we enkele C#-codevoorbeelden gebruiken om het gebruik van de functie ToDictionary te demonstreren.

Syntaxis:

Laten we elke component die wordt aangeboden binnen de volgende syntaxis van de C# ToDictionary-functie één voor één opsplitsen en begrijpen:



was dictaat = verzameling. NaarWoordenboek ( sleutelSelector , elementSelector ) ;
  • Het trefwoord “var” wordt hier weggelaten om de typecategorie van het resulterende “dict”-woordenboek te definiëren. In de meeste gevallen is dit Dictionary waarbij K het type sleutel is en V de typecategorie van de woordenboekwaarde.
  • Het element ‘collection’ vertegenwoordigt de broncollectie die u wilt converteren naar een ‘dict’-woordenboek. Het kan elke klasse zijn die de IEnumerable-interface implementeert, zoals een lijst-, array- of queryresultaat.
  • Het sleutelwoord “keySelector” is een delegatie- of lambda-expressie die specificeert hoe de sleutel uit elk item in de verzameling moet worden gehaald. Het krijgt een element uit de verzameling als argument en geeft de sleutelwaarde voor dat item terug. De sleutel moet uniek zijn voor elk item in de verzameling, omdat woordenboeken geen dubbele sleutels kunnen hebben.
  • Het trefwoord “elementSelector” verwijst naar een delegatie- of lambda-expressie die specificeert hoe de waarde uit elk item in de verzameling moet worden gehaald. Het krijgt ook een element van de verzameling als argument en levert de waarde voor dat item op.

Nadat u de functie ToDictionary hebt uitgevoerd, beschikt u over een nieuw woordenboekobject waarin elk item uit de verzameling wordt weergegeven als een sleutelwaardepaar.







Voorbeeld 1:

Laten we deze handleiding opnieuw beginnen door het gebruik van de functie ToDictionary in C# te demonstreren met behulp van een codevoorbeeld. Laten we het stap voor stap doornemen.



De code begint met het importeren van de vereiste naamruimten: System, System.Collections.Generic en System.Linq. Deze naamruimten bieden de noodzakelijke klassen en uitbreidingsmethoden om met collecties en LINQ te werken. Er is een klasse “Dummy” gedefinieerd, die de “Main”-methode van dit C#-programma bevat.



Binnen de “Main” -methode wordt een lijst met de naam “L” gemaakt. Deze lijst bevat drie stringelementen die de namen vertegenwoordigen van verschillende parfums naar keuze van de gebruiker. De ToDictionary-methode wordt aangeroepen in de “L”-lijst. Het converteert de lijst naar een woordenboek. Elk tekenreekselement in de lijst fungeert zowel als sleutel als als waarde in het resulterende woordenboek.





Het woordenboek wordt gemaakt met een hoofdletterongevoelige sleutelvergelijking met behulp van de parameter StringComparer.OrdinalIgnoreCase, die voornamelijk wordt gebruikt om een ​​hoofdletterongevoelige vergelijking op te geven bij het controleren op het bestaan ​​van sleutels. Een “if”-instructie controleert of het woordenboek de “bombshell”-sleutel bevat, terwijl de hoofdlettergebruik wordt genegeerd. Als de sleutel wordt gevonden, wordt het codefragment in het gedeelte 'if' verwerkt. Binnen het “if”-blok wordt de Console.WriteLine(“Bombshell exist”)-instructie uitgevoerd, die het bericht “Bombshell exist” naar de console afdrukt.

met behulp van Systeem ;

met behulp van Systeem. Collecties . Algemeen ;

met behulp van Systeem. Linq ;

klasse Dummie

{

statisch leegte Voornaamst ( )

{

Lijst < snaar > L = nieuwe lijst < snaar > ( ) { 'BlackOpium' , 'Bom' , 'GucciFlora' } ;

was Parfum = L. NaarWoordenboek ( X => X , X => WAAR , StringComparer. OrdinalIgnoreCase ) ;

als ( Parfum. Bevat sleutel ( 'bom' ) )

{

Troosten. Schrijf lijn ( 'Bom bestaat' ) ;

}

}

}

Omdat het woordenboek is gemaakt met een vergelijking die niet hoofdlettergevoelig is, komt de “bombshell”-sleutel overeen met de daadwerkelijke “Bombshell”-sleutel in het woordenboek. Als gevolg hiervan wordt het bericht “Bombshell bestaat” op de console afgedrukt, zoals weergegeven in de volgende bijgevoegde uitvoerafbeelding:



Voorbeeld 2:

In het vorige codevoorbeeld hebben we gedemonstreerd hoe een eenvoudige verzameling kan worden omgezet in een woordenboek via de functie ToDictionary. Nu gaan we naar een klein geavanceerd codevoorbeeld van C# voor de demonstratie van het gebruik van de C# ToDictionary-functie. Laten we de code regel voor regel opsplitsen.

Dit illustratiecodefragment begint met het invoeren van dezelfde verplichte naamruimten: System, System.Collections.Generic en System.Linq. Deze naamruimten bieden de vereiste klassen en uitbreidingsmethoden om met collecties en LINQ te werken voor dit codevoorbeeld. Er is een klasse “Dummy” gedefinieerd, die een toegangspunt is.

Binnen de “Main”-methode van de C#-taal wordt een lijst met de naam “L” gevormd. Deze lijst bevat drie objecten van de klasse “Data” die de verschillende cosmetische producten met hun prijzen en merken vertegenwoordigen. Elk gegevensobject wordt geïnitialiseerd met behulp van de syntaxis van de objectinitialisatie. De eigenschappen “Prijs” en “Merk” van elk object zijn ingesteld met specifieke waarden.

Hier komt de ToDictionary-methode. Het wordt hier op de “L”-lijst genoemd. Het converteert de lijst naar een woordenboek waarbij de eigenschap 'Prijs' als sleutel wordt gebruikt en de eigenschap 'Brand' als waarde. Het resulterende woordenboek wordt toegewezen aan de variabele “Dic”, zoals vermeld in het volgende codefragment. Er wordt een 'foreach'-lus afgestoten om de sleutel-waardeparen in het 'Dic'-woordenboek aan te roepen.

Binnen de lus zijn de sleutel en de waarde van elk paar toegankelijk via de eigenschappen “Key” en “Value” van de KeyValuePair-structuur. De functie-instructie Console.WriteLine drukt elk sleutel-waardepaar af naar de console. De uitvoer wordt opgemaakt met behulp van stringinterpolatie om de prijs- en merkinformatie afzonderlijk weer te geven.

Hier wordt de klasse “Data” gedefinieerd met twee eigenschappen: “Prijs” (een geheel getal dat de prijs van een cosmetisch product vertegenwoordigt) en “Merk” (een tekenreeks die de merknaam van een product vertegenwoordigt).

met behulp van Systeem ;

met behulp van Systeem. Collecties . Algemeen ;

met behulp van Systeem. Linq ;

klasse Dummy

{

statisch leegte Voornaamst ( )

{

Lijst < Gegevens > L = nieuwe lijst < Gegevens > ( )

{

nieuwe data { Prijs = 13000 , Merk = 'Huda-schoonheid' } ,

nieuwe data { Prijs = 15000 , Merk = 'Charlotte Telburry' } ,

nieuwe data { Prijs = 11000 , Merk = 'Nars' }

} ;

Woordenboek < int , snaar > dec = L. NaarWoordenboek ( P => P. Prijs , P => P. Merk ) ;

voorleggen ( var v in Dic )

{

Troosten. Schrijf lijn ( $ 'Prijs: {v.Key}, merk: {v.Value}' ) ;

}

}

}

klasse Gegevens

{

openbaar int Prijs { krijgen ; set ; }

openbare tekenreeks Merk { krijgen ; set ; }

}

Wanneer de code wordt uitgevoerd, wordt er een lijst met gegevensobjecten gemaakt, wordt de lijst geconverteerd naar een woordenboek met behulp van de ToDictionary-methode en worden vervolgens de sleutel-waardeparen van het woordenboek weergegeven met behulp van de “foreach”-lus.

De uitvoer voor dit codevoorbeeld vindt u hieronder. Het toont de prijzen en merken van cosmetische producten die in het woordenboek zijn opgeslagen op basis van specifieke eigenschappen, wat een handige manier biedt om de gegevens in sleutel-waardeparen te ordenen en te openen. De uitvoer van de vorige code toont drie records voor het woordenboek:

Conclusie

Deze C#-handleiding demonstreerde het gebruik van de C# ToDictionary-methode via enkele eenvoudige en nauwkeurige codeillustraties. Door een duidelijk en expressief mechanisme aan te bieden om de sleutel-waardeparen te beschrijven, maakt de ToDictionary-methode het gemakkelijker om van een verzameling een woordenboek te maken. Het is een krachtig C#-hulpprogramma om de gegevens te manipuleren en transformeren.