Sintaksė:
1. Jei norite sukurti žodyną pagal nurodytas raktų parinkiklio ir elementų parinkiklio funkcijas iš nurodyto duomenų šaltinio, perkraukite šį metodą:
Parametrai:
-
- šaltinis : Šaltinis gali būti IEnumerable (sąrašas), kuriame iš šio šaltinio sukuriamas žodynas.
- rakto parinkiklis : tai funkcija, naudojama norint gauti raktą iš kiekvieno elemento.
- elementų parinkiklis: Tai funkcija, kuri naudojama elementui gauti.
- TSource : Tai tipo parametras, nurodantis duomenų šaltinio tipą.
- TKaktas: Tai tipo parametras, nurodantis rakto tipą.
- TElementas : Tai tipo parametras, nurodantis elemento tipą.
2. Jei norite sukurti žodyną pagal nurodytą raktų parinkiklio funkciją iš nurodyto duomenų šaltinio, perkraukite šį metodą:
Parametrai:
-
- šaltinis : Šaltinis gali būti IEnumerable (sąrašas), kuriame iš šio šaltinio sukuriamas žodynas.
- rakto parinkiklis : tai funkcija, naudojama norint gauti raktą iš kiekvieno elemento.
- Šaltinis: Tai nurodo duomenų šaltinio tipą.
- TKey : nurodo rakto tipą.
1 pavyzdys: nurodytas rakto parinkiklis ir elemento parinkiklio funkcija
Sukurkite sąrašą su „Paskyros“ tipu, kuriame yra keturi atributai (Acc_ID, Acc_Name, Industry, Revenue) su penkiais įrašais.
1. Sukurkite žodyną iš ankstesnio sąrašo, naudodami raktą kaip Acc_ID, o reikšmę kaip Acc_Name.
2. Sukurkite žodyną iš ankstesnio sąrašo, naudodami raktą Acc_Name ir vertę kaip pajamas.
naudojant Sistema.Linq ;
naudojant Sistema.Kolekcijos.Bendra ;
klasė Paskyros informacija
{
viešas statinis tuštuma Pagrindinis ( )
{
// Sukurti tipo sąrašą – Paskyra.
Sąrašo detalės = naujas Sąrašas ( ) ;
// Į sąrašą įtraukite 5 įrašus.
detales . Papildyti ( naujas sąskaita { Acc_ID = 1 , Acc_Name = 'Linux' , Industrija = 'Švietimas' , Pajamos = 2500 } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 2 , Acc_Name = 'Python' , Industrija = 'Bootcamp' , Pajamos = 10 000 } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 3 , Acc_Name = 'Java' , Industrija = 'Švietimas' , Pajamos = 500 } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 4 , Acc_Name = '.NET' , Industrija = 'Treniravimas' , Pajamos = 2080 m } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 5 , Acc_Name = 'Orakulas' , Industrija = 'Darbas' , Pajamos = 2090 m } ) ;
// Sukurkite žodyną iš aukščiau pateikto sąrašo, naudodami raktą kaip Acc_ID, o reikšmę kaip Acc_Name
Konsolė . WriteLine ( ' ----Raktas kaip Acc_ID ir reikšmė kaip Acc_Name----' ) ;
Žodynas accounts_dict1 = detales . ToDictionary ( j => j . Acc_ID , j => j . Acc_Name ) ;
kiekvienam ( KeyValuePair i in accounts_dict1 )
{
Konsolė . WriteLine ( 'Sąskaitos identifikavimo kodas :' + i . Raktas + ' Paskyros vardas :' + i . Vertė ) ;
}
// Sukurkite žodyną iš anksčiau pateikto sąrašo naudodami raktą kaip Acc_Name ir vertę kaip pajamas
Konsolė . WriteLine ( ' ----Raktas kaip Acc_Name ir vertė kaip pajamos ----' ) ;
Žodynas accounts_dict2 = detales . ToDictionary ( l => l . Acc_Name , l => l . Pajamos ) ;
kiekvienam ( KeyValuePair k in accounts_dict2 )
{
Konsolė . WriteLine ( 'Paskyros vardas :' + k . Raktas + 'Paskyros pajamos:' + k . Vertė ) ;
}
}
}
// Sukurti klasę pavadinimu - Paskyra su keturiais atributais
viešas klasė sąskaita
{
viešas tarpt Acc_ID { gauti ; rinkinys ; }
viešas styga Acc_Name { gauti ; rinkinys ; }
viešas styga Industrija { gauti ; rinkinys ; }
viešas tarpt Pajamos { gauti ; rinkinys ; }
}
Išvestis:
Paaiškinimas:
1. Sukurkite klasę pavadinimu „Paskyra“ su keturiais atributais.
2. Pagrindinėje klasėje sukurkite „Sąskaitos“ tipo sąrašą ir įterpkite į jį penkis įrašus.
3. Sukurkite žodyną iš ankstesnio sąrašo, naudodami raktą kaip Acc_ID ir reikšmę kaip Acc_Name. Čia mes nurodome TKey kaip int ir TElement kaip eilutę. Metodo ToDictionary() viduje mes perduodame Acc_ID raktų parinkiklyje ir Acc_Name elementą Selector. Galiausiai naudojame „foreach“ kilpą, kad kartotume žodyną ir grąžintume raktus bei reikšmes naudodami rakto ir reikšmės ypatybes.
4. Sukurkite žodyną iš ankstesnio sąrašo, naudodami raktą Acc_Name ir reikšmę kaip Pajamos. Čia nurodome TKey kaip eilutę ir TElement kaip int. Metodo ToDictionary() viduje mes perduodame Acc_Name raktų parinkiklyje ir Revenue elemente Selector. Galiausiai naudojame „foreach“ kilpą, kad kartotume žodyną ir grąžintume raktus bei reikšmes naudodami rakto ir reikšmės ypatybes.
2 pavyzdys: nurodytas rakto parinkiklis
Naudokite ankstesnį kodą ir sukurkite žodyną iš ankstesnio sąrašo, naudodami raktą kaip Acc_ID.
naudojant Sistema ;naudojant Sistema.Linq ;
naudojant Sistema.Kolekcijos.Bendra ;
klasė Paskyros informacija
{
viešas statinis tuštuma Pagrindinis ( )
{
// Sukurti tipo sąrašą – Paskyra.
Sąrašo detalės = naujas Sąrašas ( ) ;
// Į sąrašą įtraukite 5 įrašus.
detales . Papildyti ( naujas sąskaita { Acc_ID = 1 , Acc_Name = 'Linux' , Industrija = 'Švietimas' , Pajamos = 2500 } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 2 , Acc_Name = 'Python' , Industrija = 'Bootcamp' , Pajamos = 10 000 } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 3 , Acc_Name = 'Java' , Industrija = 'Švietimas' , Pajamos = 500 } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 4 , Acc_Name = '.NET' , Industrija = 'Treniravimas' , Pajamos = 2080 m } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 5 , Acc_Name = 'Orakulas' , Industrija = 'Darbas' , Pajamos = 2090 m } ) ;
// Sukurkite žodyną iš aukščiau pateikto sąrašo, naudodami raktą kaip Acc_ID.
Žodynas accounts_dict = detales . ToDictionary ( j => j . Acc_ID ) ;
kiekvienam ( KeyValuePair i in accounts_dict )
{
Konsolė . WriteLine ( 'Raktas:' + i . Raktas + '--> Paskyros pavadinimas :' + i . Vertė . Acc_Name
+ 'Sąskaita-pramonė:' + i . Vertė . Industrija
+ 'Paskyros pajamos:' + i . Vertė . Pajamos ) ;
}
}
}
// Sukurti klasę pavadinimu - Paskyra su keturiais atributais
viešas klasė sąskaita
{
viešas tarpt Acc_ID { gauti ; rinkinys ; }
viešas styga Acc_Name { gauti ; rinkinys ; }
viešas styga Industrija { gauti ; rinkinys ; }
viešas tarpt Pajamos { gauti ; rinkinys ; }
}
Išvestis:
Paaiškinimas:
Čia sukuriame žodyną, kurio raktas yra Acc_ID. Tai veikia kaip raktas kiekvienam įrašui žodyne, kurį sukūrėme iš sąrašo. Po to mes naudojame „foreach“ kilpą, kad gautume raktus ir reikšmes (su atributais), naudodami rakto ir reikšmės ypatybes.
3 pavyzdys: pasikartojantys raktai – ArgumentException
Sukurkite sąrašą su dviem įrašais ir pabandykite konvertuoti jį į žodyną naudodami raktą Acc_ID.
naudojant Sistema ;naudojant Sistema.Linq ;
naudojant Sistema.Kolekcijos.Bendra ;
klasė Paskyros informacija
{
viešas statinis tuštuma Pagrindinis ( )
{
// Sukurti tipo sąrašą – Paskyra.
Sąrašo detalės = naujas Sąrašas ( ) ;
// Pridėti 2 įrašus į sąrašą.
detales . Papildyti ( naujas sąskaita { Acc_ID = 1 , Acc_Name = 'Linux' , Industrija = 'Švietimas' , Pajamos = 2500 } ) ;
detales . Papildyti ( naujas sąskaita { Acc_ID = 1 , Acc_Name = 'Python' , Industrija = 'Bootcamp' , Pajamos = 10 000 } ) ;
// Pabandykite sukurti žodyną iš aukščiau pateikto sąrašo, naudodami raktą kaip Acc_ID.
Žodynas accounts_dict = detales . ToDictionary ( j => j . Acc_ID ) ;
}
}
// Sukurti klasę pavadinimu - Paskyra su keturiais atributais
viešas klasė sąskaita
{
viešas tarpt Acc_ID { gauti ; rinkinys ; }
viešas styga Acc_Name { gauti ; rinkinys ; }
viešas styga Industrija { gauti ; rinkinys ; }
viešas tarpt Pajamos { gauti ; rinkinys ; }
}
Išimtis:
Neapdorota išimtis, kuri yra System.ArgumentException, iškeliama, nes raktas yra dublikatas (1) abiejuose Acc_ID.
4 pavyzdys: Nulinis šaltinis – ArgumentNullException
Sukurkite sąrašą su „Paskyros“ tipu ir priskirkite jam nulį. Pabandykite sukurti žodyną iš ankstesnio sąrašo, naudodami raktą kaip Acc_ID.
naudojant Sistema ;naudojant Sistema.Linq ;
naudojant Sistema.Kolekcijos.Bendra ;
klasė Paskyros informacija
{
viešas statinis tuštuma Pagrindinis ( )
{
// Sukurkite tipo sąrašą – paskyra ir priskirkite jai nulį.
Sąrašo detalės = nulinis ;
// Pabandykite sukurti žodyną iš aukščiau pateikto sąrašo, naudodami raktą kaip Acc_ID.
Žodynas accounts_dict = detales . ToDictionary ( j => j . Acc_ID ) ;
}
}
// Sukurti klasę pavadinimu - Paskyra su keturiais atributais
viešas klasė sąskaita
{
viešas tarpt Acc_ID { gauti ; rinkinys ; }
viešas styga Acc_Name { gauti ; rinkinys ; }
viešas styga Industrija { gauti ; rinkinys ; }
viešas tarpt Pajamos { gauti ; rinkinys ; }
}
Išimtis:
Neapdorota išimtis, kuri yra System.ArgumentNullException, iškeliama, nes sąrašas yra nulinis.
Išvada
Sužinojome, kaip sukurti žodyną iš IEnumerable (čia yra sąrašas), naudojant ToDictionary() metodą C# LINQ. Šis metodas gali būti perkrautas dviem būdais. Abu būdus aptarėme pateikdami pavyzdžius. Taip pat sužinojome du išimčių atvejus, kurie iškeliami taikant šį metodą, kai duomenų šaltinis/keySelector/elementSelector yra nulinis, o raktai pasikartoja.