C# ToDictionary -menetelmä

C Todictionary Menetelma



C#:n ToDictionary-toiminto on LINQ-laajennustoiminto, jonka avulla voit muuntaa tietokokoelman sanakirjaksi, joka tarjoaa selkeän ja käytännöllisen tavan kartoittaa entiteetit erillisiin avaimiin ja niihin liittyviin arvoihin. Se vaatii kaksi argumenttia, kaksi delegaattia tai lambda-lauseketta, joista yksi valitsee avaimen ja toinen arvon valitsemiseen jokaiselle kokoelman objektille. Tässä artikkelissa käytämme joitain C#-koodiesimerkkejä ToDictionary-funktion käytön havainnollistamiseen.

Syntaksi:

Puretaan ja ymmärretään jokainen C# ToDictionary -funktion seuraavassa syntaksissa toimitettu komponentti yksitellen:



oli sanele = kokoelma. ToDictionary ( näppäinvalitsin , elementSelector ) ;
  • Avainsana 'var' hylätään tässä määrittämään tuloksena olevan 'dict'-sanakirjan tyyppiluokka. Useimmissa tapauksissa se on Sanakirja, jossa K on avaimen tyyppi ja V on sanakirjan arvon tyyppiluokka.
  • 'Collection'-elementti edustaa lähdekokoelmaa, jonka haluat muuntaa 'dict'-sanakirjaksi. Se voi olla mikä tahansa IEnumerable-rajapinnan toteuttava luokka, kuten luettelo, taulukko tai kyselyn tulos.
  • Avainsana 'keySelector' on delegaatti- tai lambdalauseke, joka määrittää, kuinka avain puretaan kokoelman kustakin kohteesta. Se saa elementin kokoelmasta argumenttina ja palauttaa kyseisen kohteen avainarvon. Avaimen tulee olla yksilöllinen jokaiselle kokoelman kohteelle, koska sanakirjoissa ei voi olla päällekkäisiä avaimia.
  • Avainsana 'elementSelector' viittaa delegaatti- tai lambda-lausekkeeseen, joka määrittää, kuinka arvo poimitaan jokaisesta kokoelman kohteesta. Se saa myös kokoelman elementin argumenttina ja antaa arvon tälle kohteelle.

ToDictionary-toiminnon suorittamisen jälkeen sinulla on uusi sanakirjaobjekti, jossa jokainen kokoelman alkio esitetään avain-arvo-parina.







Esimerkki 1:

Aloitetaan tämä opas uudelleen esittelemällä ToDictionary-funktion käyttöä C#:ssa koodiesimerkin avulla. Käydään se läpi askel askeleelta.



Koodi alkaa vaadituilla nimiavaruuksilla, jotka tuodaan: System, System.Collections.Generic ja System.Linq. Nämä nimitilat tarjoavat tarvittavat luokat ja laajennusmenetelmät kokoelmien ja LINQ:n kanssa työskentelemiseen. 'Dummy'-luokka on määritelty, joka sisältää tämän C#-ohjelman 'Main'-metodin.



'Pää'-menetelmän sisällä luodaan luettelo nimeltä 'L'. Tämä luettelo sisältää kolme merkkijonoelementtiä, jotka edustavat käyttäjän valitsemien eri hajuvesien nimiä. ToDictionary-menetelmää kutsutaan 'L'-luettelossa. Se muuntaa luettelon sanakirjaksi. Jokainen luettelon merkkijonoelementti toimii sekä avaimena että arvona tuloksena olevassa sanakirjassa.





Sanakirja luodaan kirjainkoolla välittömällä avainvertailulla käyttämällä StringComparer.OrdinalIgnoreCase-parametria, jota käytetään ensisijaisesti määrittämään vertailu, jossa kirjainkoolla ei ole merkitystä avaimien olemassaolon tarkistamisen yhteydessä. 'if'-käsky tarkistaa, sisältääkö sanakirja 'bombshell'-avaimen, mutta jättää sen kirjainkoon huomiotta. Jos avain löytyy, 'jos'-osion koodinpätkä käsitellään. 'if'-lohkon sisällä suoritetaan Console.WriteLine('Bombshell egzistuoja') -lause, joka tulostaa 'Bombshell is' -viestin konsoliin.

järjestelmän avulla ;

järjestelmän avulla. Kokoelmat . Yleinen ;

järjestelmän avulla. Linq ;

luokan nukke

{

staattinen mitätön Main ( )

{

Lista < merkkijono > L = uusi lista < merkkijono > ( ) { 'BlackOpium' , 'Pommi' , 'GucciFlora' } ;

oli hajuvettä = L. ToDictionary ( x => x , x => totta , StringComparer. OrdinalIgnoreCase ) ;

jos ( Hajuvesi. Sisältää avaimen ( 'pommi' ) )

{

Konsoli. WriteLine ( 'Pommi on olemassa' ) ;

}

}

}

Koska sanakirja on luotu vertailulla, jossa kirjainkoolla ei ole merkitystä, 'bombshell'-näppäin vastaa sanakirjan todellista 'Bombshell'-avainta. Tämän seurauksena 'Pommi on olemassa' -viesti tulostetaan konsoliin seuraavan liitteenä olevan tulosteen kuvan mukaisesti:



Esimerkki 2:

Edellisessä koodiesimerkissä osoitimme, kuinka yksinkertainen kokoelma voidaan muuntaa sanakirjaksi ToDictionary-toiminnon avulla. Nyt siirrymme kohti hieman edistynyttä koodiesimerkkiä C#:sta C# ToDictionary -funktion käytön esittelyyn. Puretaan koodi rivi riviltä.

Tämä esimerkkikoodinpätkä alkaa tuomalla samat pakolliset nimiavaruudet: System, System.Collections.Generic ja System.Linq. Nämä nimiavaruudet tarjoavat vaaditut luokat ja laajennusmenetelmät kokoelmien ja LINQ:n käyttöön tässä koodiesimerkissä. 'Dummy'-luokka on määritelty, joka on sisääntulopiste.

C#-kielen 'Main'-menetelmän sisällä muodostetaan lista nimeltä 'L'. Tämä luettelo sisältää kolme 'Data'-luokan esinettä, jotka edustavat erilaisia ​​kosmeettisia tuotteita niiden hinnoilla ja merkeillä. Jokainen tietoobjekti alustetaan käyttämällä objektin alustussyntaksia. Kunkin kohteen 'Price'- ja 'Brand'-ominaisuudet on asetettu tietyillä arvoilla.

Tässä tulee ToDictionary-menetelmä. Sitä kutsutaan tässä 'L'-luettelossa. Se muuntaa luettelon sanakirjaksi, jossa 'Price'-ominaisuutta käytetään avaimena ja 'Brand'-ominaisuutta käytetään arvona. Tuloksena oleva sanakirja on määritetty 'Dic'-muuttujalle seuraavassa toimitetussa koodinpätkässä mainitulla tavalla. Foreach-silmukka katkaistaan ​​kutsuakseen Dic-sanakirjan avainarvopareja.

Silmukan sisällä kunkin parin avaimeen ja arvoon päästään käyttämällä KeyValuePair -rakenteen Key- ja Value-ominaisuuksia. Console.WriteLine-funktiokäsky tulostaa jokaisen avain-arvoparin konsoliin. Tulos muotoillaan käyttämällä merkkijonointerpolaatiota hinta- ja tuotemerkkitietojen näyttämiseksi erikseen.

Tässä 'Data'-luokka määritellään kahdella ominaisuudella: 'Price' (kokonaisluku, joka edustaa kosmeettisen tuotteen hintaa) ja 'Brand' (merkkijono, joka edustaa tuotteen tuotemerkkiä).

järjestelmän avulla ;

järjestelmän avulla. Kokoelmat . Yleinen ;

järjestelmän avulla. Linq ;

luokan nukke

{

staattinen mitätön Main ( )

{

Lista < Data > L = uusi lista < Data > ( )

{

uusia tietoja { Hinta = 13 000 , Brändi = 'Huda Beauty' } ,

uusia tietoja { Hinta = 15 000 , Brändi = 'Charlotte Telburry' } ,

uusia tietoja { Hinta = 11 000 , Brändi = 'Nars' }

} ;

Sanakirja < int , merkkijono > joulukuuta = L. ToDictionary ( s => s. Hinta , s => s. Brändi ) ;

jokaiselle ( var v julkaisussa Dic )

{

Konsoli. WriteLine ( $ 'Hinta: {v.Key}, merkki: {v.Value}' ) ;

}

}

}

luokan tiedot

{

julkinen int Hinta { saada ; aseta ; }

julkinen merkkijono { saada ; aseta ; }

}

Kun koodi suoritetaan, se luo luettelon tietoobjekteista, muuntaa luettelon sanakirjaksi ToDictionary-menetelmällä ja näyttää sitten sanakirjan avainarvoparit käyttämällä 'foreach' -silmukkaa.

Tämän koodiesimerkin tulos on annettu seuraavassa. Se näyttää sanakirjaan tallennettujen kosmeettisten tuotteiden hinnat ja merkit tiettyjen ominaisuuksien perusteella, mikä tarjoaa kätevän tavan järjestää ja käyttää tietoja avainarvopareina. Edellisen koodin tulos näyttää kolme sanakirjan tietuetta:

Johtopäätös

Tämä C#-opas esitteli C# ToDictionary -menetelmän käyttöä joidenkin perus- ja tarkkojen koodikuvien avulla. Tarjoamalla selkeän ja ilmeisen mekanismin avain-arvo-parien kuvaamiseen, ToDictionary-menetelmä helpottaa kokoelman muuttamista sanakirjaksi. Se on vahva C#-apuohjelma tietojen käsittelemiseen ja muuntamiseen.