Konvertējiet C# LINQ uz vārdnīcu

Konvertejiet C Linq Uz Vardnicu



Programmā C# LINQ veidojot vārdnīcu no System.Collections.Generic.IEnumerable ir iespējams, izmantojot ToDictionary() metodi. Šī metode izveido vārdnīcu ar no dotā . The System.ArgumentNullException tiek izmests, ja datu avots, keySelector vai elementSelector ir nulle. Turklāt, ja atslēgas atlasītājs diviem elementiem izveido atslēgas dublikātus, System.ArgumentException tiek izmests. Šajā rokasgrāmatā mēs apspriedīsim, kā izveidot vārdnīcu no saraksta datu avota, pārslogojot divas metodes.

Sintakse:

1. Ja vēlaties izveidot vārdnīcu atbilstoši norādītajām taustiņu atlasītāja un elementu atlasītāja funkcijām no dotā datu avota, pārslogojiet šādu metodi:









Parametri:



    1. avots : Avots var būt IEnumerable (saraksts), kurā vārdnīca ir izveidota no šī avota.
    2. taustiņu atlasītājs : šī ir funkcija, kas tiek izmantota, lai iegūtu atslēgu no katra elementa.
    3. elementu atlasītājs: Šī ir funkcija, kas tiek izmantota elementa iegūšanai.
    4. TSource : Šis ir tipa parametrs, kas norāda datu avota veidu.
    5. TKey: Šis ir tipa parametrs, kas norāda atslēgas veidu.
    6. TElement : Šis ir tipa parametrs, kas norāda elementa veidu.

2. Ja vēlaties izveidot vārdnīcu atbilstoši norādītajai atslēgas atlasītāja funkcijai no dotā datu avota, pārslogojiet šādu metodi:





Parametri:



    1. avots : Avots var būt IEnumerable (saraksts), kurā vārdnīca ir izveidota no šī avota.
    2. taustiņu atlasītājs : šī ir funkcija, kas tiek izmantota, lai iegūtu atslēgu no katra elementa.
    3. Avots: Tas attiecas uz datu avota veidu.
    4. TKey : tas norāda atslēgas veidu.

1. piemērs: norādītā atslēgas atlasītāja un elementu atlasītāja funkcija

Izveidojiet sarakstu ar veidu “Konts”, kurā ir četri atribūti (Acc_ID, Acc_Name, Industry, Revenue) ar pieciem ierakstiem.

1. Izveidojiet vārdnīcu no iepriekšējā saraksta ar atslēgu kā Acc_ID un vērtību kā Acc_Name.
2. Izveidojiet vārdnīcu no iepriekšējā saraksta, izmantojot atslēgu kā Acc_Name un vērtību kā ieņēmumus.

izmantojot Sistēma ;
izmantojot System.Linq ;
izmantojot Sistēma.Kolekcijas.Vispārīgi ;

klasē Konta informācija
{
publiski statisks nederīgs Galvenā ( )
{
// Izveidot veida sarakstu — konts.
Saraksta detaļas = jauns Saraksts ( ) ;
// Pievienojiet sarakstam 5 ierakstus.
detaļas . Pievienot ( jauns Konts { Acc_ID = 1 , Acc_Name = 'Linux' , Rūpniecība = 'Izglītība' ,Ieņēmumi = 2500 } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 2 , Acc_Name = 'Pitons' , Rūpniecība = 'Bootcamp' ,Ieņēmumi = 10 000 } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 3 , Acc_Name = 'Java' , Rūpniecība = 'Izglītība' ,Ieņēmumi = 500 } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 4 , Acc_Name = '.TĪKLS' , Rūpniecība = 'Apmācība' ,Ieņēmumi = 2080. gads } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 5 , Acc_Name = 'Orākuls' , Rūpniecība = 'Darbs' ,Ieņēmumi = 2090. gads } ) ;

// Izveidojiet vārdnīcu no iepriekš minētā saraksta ar atslēgu kā Acc_ID un vērtību kā Acc_Name
Konsole . WriteLine ( ' ----Atslēga kā Acc_ID un vērtība kā Acc_Name----' ) ;
Vārdnīca accounts_dict1 = detaļas . ToDictionary ( j => j . Acc_ID , j => j . Acc_Name ) ;

katram ( KeyValuePair i iekšā accounts_dict1 )
{
Konsole . WriteLine ( 'Konta ID :' + i . Atslēga + ' Konta vārds :' + i . Vērtība ) ;
}

// Izveidojiet vārdnīcu no iepriekš minētā saraksta ar atslēgu kā Acc_Name un vērtību kā ieņēmumus
Konsole . WriteLine ( ' ----Atslēga kā Acc_Name un vērtība kā ieņēmumi ----' ) ;
Vārdnīca accounts_dict2 = detaļas . ToDictionary ( l => l . Acc_Name , l => l . Ieņēmumi ) ;

katram ( KeyValuePair k iekšā accounts_dict2 )
{
Konsole . WriteLine ( 'Konta vārds :' + k . Atslēga + 'Konta ieņēmumi:' + k . Vērtība ) ;
}

}
}

// Izveidot klasi ar nosaukumu — konts ar četriem atribūtiem
publiski klasē Konts
{
publiski starpt Acc_ID { gūt ; komplekts ; }
publiski virkne Acc_Name { gūt ; komplekts ; }
publiski virkne Rūpniecība { gūt ; komplekts ; }
publiski starpt Ieņēmumi { gūt ; komplekts ; }
}

Izvade:

Paskaidrojums:

1. Izveidojiet klasi ar nosaukumu “Konts” ar četriem atribūtiem.

2. Galvenajā klasē izveidojiet “Konts” tipa sarakstu un ievietojiet tajā piecus ierakstus.

3. Izveidojiet vārdnīcu no iepriekšējā saraksta ar atslēgu kā Acc_ID un vērtību kā Acc_Name. Šeit mēs norādām TKey kā int un TElement kā virkni. Metodes ToDictionary() ietvaros mēs nododam Acc_ID cilnē keySelector un Acc_Name elementā ElementSelector. Visbeidzot, mēs izmantojam cilpu “foreach”, lai atkārtotu vārdnīcu un atgrieztu atslēgas un vērtības, izmantojot atslēgas un vērtības rekvizītus.

4. Izveidojiet vārdnīcu no iepriekšējā saraksta ar atslēgu kā Acc_Name un vērtību kā Ieņēmumi. Šeit mēs norādām TKey kā virkni un TElement kā int. Metodes ToDictionary() ietvaros mēs nododam Acc_Name atslēgas atlasītajā un ieņēmumu elementā elementSelector. Visbeidzot, mēs izmantojam cilpu “foreach”, lai atkārtotu vārdnīcu un atgrieztu atslēgas un vērtības, izmantojot atslēgas un vērtības rekvizītus.

2. piemērs: Norādītā atslēgas atlasītājs

Izmantojiet iepriekšējo kodu un izveidojiet vārdnīcu no iepriekšējā saraksta ar atslēgu kā Acc_ID.

izmantojot Sistēma ;
izmantojot System.Linq ;
izmantojot Sistēma.Kolekcijas.Vispārīgi ;

klasē Konta informācija
{
publiski statisks nederīgs Galvenā ( )
{
// Izveidot veida sarakstu — konts.
Saraksta detaļas = jauns Saraksts ( ) ;
// Pievienojiet sarakstam 5 ierakstus.
detaļas . Pievienot ( jauns Konts { Acc_ID = 1 , Acc_Name = 'Linux' , Rūpniecība = 'Izglītība' ,Ieņēmumi = 2500 } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 2 , Acc_Name = 'Pitons' , Rūpniecība = 'Bootcamp' ,Ieņēmumi = 10 000 } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 3 , Acc_Name = 'Java' , Rūpniecība = 'Izglītība' ,Ieņēmumi = 500 } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 4 , Acc_Name = '.TĪKLS' , Rūpniecība = 'Apmācība' ,Ieņēmumi = 2080. gads } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 5 , Acc_Name = 'Orākuls' , Rūpniecība = 'Darbs' ,Ieņēmumi = 2090. gads } ) ;

// Izveidojiet vārdnīcu no iepriekš minētā saraksta ar atslēgu kā Acc_ID.
Vārdnīca accounts_dict = detaļas . ToDictionary ( j => j . Acc_ID ) ;
katram ( KeyValuePair i iekšā accounts_dict )
{
Konsole . WriteLine ( 'Atslēga:' + i . Atslēga + '-->  Konta nosaukums:' + i . Vērtība . Acc_Name
+ 'Konta nozare:' + i . Vērtība . Rūpniecība
+ 'Konta ieņēmumi:' + i . Vērtība . Ieņēmumi ) ;
}

}
}

// Izveidot klasi ar nosaukumu — konts ar četriem atribūtiem
publiski klasē Konts
{
publiski starpt Acc_ID { gūt ; komplekts ; }
publiski virkne Acc_Name { gūt ; komplekts ; }
publiski virkne Rūpniecība { gūt ; komplekts ; }
publiski starpt Ieņēmumi { gūt ; komplekts ; }
}

Izvade:

Paskaidrojums:

Šeit mēs izveidojam vārdnīcu ar atslēgu kā Acc_ID. Tas darbojas kā atslēga katram ierakstam vārdnīcā, kuru izveidojām no saraksta. Pēc tam mēs izmantojam cilpu “foreach”, lai iegūtu atslēgas un vērtības (ar atribūtiem), izmantojot atslēgas un vērtības rekvizītus.

3. piemērs: dublikātu atslēgas — ArgumentException

Izveidojiet sarakstu ar diviem ierakstiem un mēģiniet to pārvērst vārdnīcā, izmantojot atslēgu Acc_ID.

izmantojot Sistēma ;
izmantojot System.Linq ;
izmantojot Sistēma.Kolekcijas.Vispārīgi ;

klasē Konta informācija
{
publiski statisks nederīgs Galvenā ( )
{
// Izveidot veida sarakstu — konts.
Saraksta detaļas = jauns Saraksts ( ) ;
// Pievienojiet sarakstam 2 ierakstus.
detaļas . Pievienot ( jauns Konts { Acc_ID = 1 , Acc_Name = 'Linux' , Rūpniecība = 'Izglītība' ,Ieņēmumi = 2500 } ) ;
detaļas . Pievienot ( jauns Konts { Acc_ID = 1 , Acc_Name = 'Pitons' , Rūpniecība = 'Bootcamp' ,Ieņēmumi = 10 000 } ) ;

// Mēģiniet izveidot vārdnīcu no iepriekš minētā saraksta ar atslēgu kā Acc_ID.
Vārdnīca accounts_dict = detaļas . ToDictionary ( j => j . Acc_ID ) ;

}
}

// Izveidot klasi ar nosaukumu — konts ar četriem atribūtiem
publiski klasē Konts
{
publiski starpt Acc_ID { gūt ; komplekts ; }
publiski virkne Acc_Name { gūt ; komplekts ; }
publiski virkne Rūpniecība { gūt ; komplekts ; }
publiski starpt Ieņēmumi { gūt ; komplekts ; }
}

Izņēmums:

Tiek parādīts neapstrādāts izņēmums, kas ir System.ArgumentException, jo atslēga ir dublēta (1) abos Acc_ID.

4. piemērs: Null Source — ArgumentNullException

Izveidojiet sarakstu ar veidu “Konts” un piešķiriet tam nulli. Mēģiniet izveidot vārdnīcu no iepriekšējā saraksta, izmantojot atslēgu kā Acc_ID.

izmantojot Sistēma ;
izmantojot System.Linq ;
izmantojot Sistēma.Kolekcijas.Vispārīgi ;

klasē Konta informācija
{
publiski statisks nederīgs Galvenā ( )
{
// Izveidot veida sarakstu — konts un piešķirt tam nulli.
Saraksta detaļas = null ;

// Mēģiniet izveidot vārdnīcu no iepriekš minētā saraksta ar atslēgu kā Acc_ID.
Vārdnīca accounts_dict = detaļas . ToDictionary ( j => j . Acc_ID ) ;

}
}

// Izveidot klasi ar nosaukumu — konts ar četriem atribūtiem
publiski klasē Konts
{
publiski starpt Acc_ID { gūt ; komplekts ; }
publiski virkne Acc_Name { gūt ; komplekts ; }
publiski virkne Rūpniecība { gūt ; komplekts ; }
publiski starpt Ieņēmumi { gūt ; komplekts ; }
}

Izņēmums:

Neapstrādāts izņēmums, kas ir System.ArgumentNullException, tiek parādīts, jo saraksts ir nulle.

Secinājums

Mēs uzzinājām, kā izveidot vārdnīcu no IEnumerable (šeit tas ir saraksts), izmantojot C# LINQ metodi ToDictionary (). Šo metodi var pārslogot divos veidos. Mēs apspriedām abas metodes ar piemēriem. Mēs arī uzzinājām divus izņēmuma gadījumus, kas tiek parādīti ar šo metodi, kad datu avots/keySelector/elementSelector ir nulle un atslēgas ir dublētas.