Mètode C# ToDictionary

Metode C Todictionary



La funció ToDictionary en C# és una funció d'extensió LINQ que us permet transformar una col·lecció de dades en un diccionari que ofereix una manera clara i pràctica d'assignar les entitats a claus diferents i valors relacionats. Requereix dos arguments, dos delegats o expressions lambda, un per triar la clau i un altre per triar el valor de cada objecte de la col·lecció. En aquest article, utilitzarem alguns exemples de codi C# per demostrar els usos de la funció ToDictionary.

Sintaxi:

Desglossem i entenem cada component que es proporciona dins de la sintaxi següent de la funció C# ToDictionary un per un:



era dictat = col · lecció. Al Diccionari ( keySelector , elementSelector ) ;
  • La paraula clau 'var' s'elimina aquí per definir la categoria de tipus del diccionari 'dict' resultant. En la majoria dels casos, és Dictionary on K és el tipus de clau i V és la categoria de tipus del valor del diccionari.
  • L'element 'col·lecció' representa la col·lecció font que voleu convertir en un diccionari 'dict'. Pot ser qualsevol classe que implementi la interfície IEnumerable, com ara una llista, una matriu o un resultat de consulta.
  • La paraula clau 'keySelector' és una expressió delegat o lambda que especifica com extreure la clau de cada element de la col·lecció. Obté un element de la col·lecció com a argument i retorna el valor clau d'aquest element. La clau ha de ser única per a cada element de la col·lecció, ja que els diccionaris no poden tenir claus duplicades.
  • La paraula clau 'elementSelector' fa referència a una expressió delegat o lambda que especifica com extreure el valor de cada element de la col·lecció. També obté un element de la col·lecció com a argument i produeix el valor d'aquest element.

Després d'executar la funció ToDictionary, tindreu un nou objecte de diccionari on cada element de la col·lecció es representa com un parell clau-valor.







Exemple 1:

Comencem de nou aquesta guia demostrant l'ús de la funció ToDictionary en C# amb l'ajuda d'un exemple de codi. Anem-hi pas a pas.



El codi comença amb els espais de noms necessaris que s'importen: System, System.Collections.Generic i System.Linq. Aquests espais de noms proporcionen les classes i els mètodes d'extensió necessaris per treballar amb col·leccions i LINQ. Es defineix la classe 'Dummy' que conté el mètode 'Main' d'aquest programa C#.



Dins del mètode 'Principal', es crea una llista anomenada 'L'. Aquesta llista conté tres elements de cadena que representen els noms de diferents perfums que trieu l'usuari. El mètode ToDictionary es crida a la llista 'L'. Converteix la llista en un diccionari. Cada element de cadena de la llista serveix com a clau i com a valor al diccionari resultant.





El diccionari es crea amb una comparació de claus que no distingeix entre majúscules i minúscules mitjançant el paràmetre StringComparer.OrdinalIgnoreCase que s'utilitza principalment per especificar una comparació que no distingeix entre majúscules i minúscules quan es comprova l'existència de claus. Una declaració 'si' comprova si el diccionari conté la clau 'bomba' mentre ignora les majúscules i minúscules. Si es troba la clau, es processarà el fragment de codi dins de la secció 'si'. Dins del bloc 'if', s'executa la instrucció Console.WriteLine('Bombshell exists') que imprimeix el missatge 'Bombshell exists' a la consola.

utilitzant System ;

utilitzant System. Col·leccions . Genèric ;

utilitzant System. Linq ;

maniquí de classe

{

estàtica buit Principal ( )

{

Llista < corda > L = nova llista < corda > ( ) { 'BlackOpium' , 'Bomba' , 'GucciFlora' } ;

era el perfum = L. Al Diccionari ( x => x , x => veritat , StringComparer. OrdinalIgnoreCase ) ;

si ( Perfum. Conté la clau ( 'bomba' ) )

{

Consola. WriteLine ( 'La bomba existeix' ) ;

}

}

}

Com que el diccionari es crea amb una comparació que no distingeix entre majúscules i minúscules, la clau 'bomba' coincideix amb la clau 'bomba' real del diccionari. Com a resultat, el missatge 'Bombshell exists' s'imprimeix a la consola tal com es mostra a la següent imatge de sortida adjunta:



Exemple 2:

A l'exemple de codi anterior, vam demostrar com es pot convertir una col·lecció senzilla en un diccionari mitjançant la funció ToDictionary. Ara, anirem cap a un exemple de codi avançat de C# per a la demostració dels usos de la funció C# ToDictionary. Desglossem el codi línia per línia.

Aquest fragment de codi d'il·lustració comença incorporant els mateixos espais de noms obligatoris: System, System.Collections.Generic i System.Linq. Aquests espais de noms proporcionen les classes i els mètodes d'extensió necessaris per treballar amb col·leccions i LINQ per a aquest exemple de codi. Es defineix la classe 'dummy' que és un punt d'entrada.

Dins del mètode 'Main' del llenguatge C#, es forma una llista anomenada 'L'. Aquesta llista conté tres objectes de la classe “Data” que representen els diferents productes cosmètics amb els seus preus i marques. Cada objecte de dades s'inicializa mitjançant la sintaxi de l'inicialitzador d'objectes. Les propietats 'Preu' i 'Marca' de cada objecte s'estableixen amb valors específics.

Aquí ve el mètode ToDictionary. Es diu aquí a la llista 'L'. Converteix la llista en un diccionari on s'utilitza la propietat 'Preu' com a clau i la propietat 'Marca' com a valor. El diccionari resultant s'assigna a la variable 'Dic' tal com s'esmenta al fragment de codi proporcionat següent. S'elimina un bucle 'foreach' per trucar als parells clau-valor del diccionari 'Dic'.

Dins del bucle, s'accedeix a la clau i el valor de cada parell mitjançant les propietats 'Key' i 'Value' de l'estructura KeyValuePair. La instrucció de funció Console.WriteLine imprimeix cada parell clau-valor a la consola. La sortida es formatea mitjançant la interpolació de cadenes per mostrar el preu i la informació de la marca per separat.

Aquí, la classe 'Data' es defineix amb dues propietats: 'Preu' (un nombre enter que representa el preu d'un producte cosmètic) i 'Marca' (una cadena que representa la marca d'un producte).

utilitzant System ;

utilitzant System. Col·leccions . Genèric ;

utilitzant System. Linq ;

maniquí de classe

{

estàtica buit Principal ( )

{

Llista < Dades > L = nova llista < Dades > ( )

{

dades noves { Preu = 13000 , Marca = 'Huda Beauty' } ,

noves dades { Preu = 15000 , Marca = 'Charlotte Telburry' } ,

noves dades { Preu = 11000 , Marca = 'Nars' }

} ;

Diccionari < int , corda > Dic = L. Al Diccionari ( pàg => pàg. Preu , pàg => pàg. Marca ) ;

per cadascú ( var v al Dic )

{

Consola. WriteLine ( $ 'Preu: {v.Key}, marca: {v.Value}' ) ;

}

}

}

Dades de classe

{

públic int Preu { aconseguir ; conjunt ; }

Marca de cadena pública { aconseguir ; conjunt ; }

}

Quan s'executa el codi, crea una llista d'objectes de dades, converteix la llista en un diccionari mitjançant el mètode ToDictionary i, a continuació, mostra els parells clau-valor del diccionari mitjançant el bucle 'foreach'.

La sortida d'aquest exemple de codi es proporciona a continuació. Mostra els preus i les marques dels productes cosmètics que s'emmagatzemen al diccionari en funció de propietats específiques, proporcionant una manera còmoda d'organitzar i accedir a les dades en parells clau-valor. La sortida del codi anterior mostra tres registres per al diccionari:

Conclusió

Aquesta guia de C# va demostrar l'ús del mètode C# ToDictionary mitjançant algunes il·lustracions de codi bàsiques i precises. En oferir un mecanisme clar i expressiu per descriure els parells clau-valor, el mètode ToDictionary fa que sigui més fàcil convertir una col·lecció en un diccionari. És una potent utilitat C# per manipular i transformar les dades.