Syntaks:
1. Hvis du vil oprette en ordbog i henhold til specificerede nøglevælger- og elementvælgerfunktioner fra den givne datakilde, skal du overbelaste følgende metode:
Parametre:
-
- kilde : Kilde kan være en IEnumerable (liste), hvori ordbogen er oprettet fra denne kilde.
- nøglevælger : Dette er en funktion, som bruges til at hente nøglen fra hvert element.
- elementvælger: Dette er en funktion, som bruges til at få elementet.
- TSource : Dette er typeparameteren, der specificerer typen af datakilden.
- T-nøgle: Dette er typeparameteren, der specificerer nøglens type.
- TElement : Dette er typeparameteren, der specificerer typen af element.
2. Hvis du vil oprette en ordbog i henhold til den angivne nøglevælgerfunktion fra den givne datakilde, skal du overbelaste følgende metode:
Parametre:
-
- kilde : Kilde kan være en IEnumerable (liste), hvori ordbogen er oprettet fra denne kilde.
- nøglevælger : Dette er en funktion, som bruges til at hente nøglen fra hvert element.
- TKilde: Dette refererer til typen af datakilde.
- TKey : Den specificerer nøgletypen.
Eksempel 1: Specificeret nøglevælger og elementvælgerfunktion
Opret en liste med typen 'Konto', der indeholder fire attributter (Acc_ID, Acc_Name, Industry, Revenue) med fem poster.
1. Opret en ordbog fra den forrige liste med nøglen som Acc_ID og Value as Acc_Name.
2. Opret en ordbog fra den forrige liste med nøglen som Acc_Name og Value as Revenue.
ved brug af System.Linq ;
ved brug af System.Collectioner.Generisk ;
klasse Kontooplysninger
{
offentlig statisk ugyldig Hoved ( )
{
// Opret liste af type - Konto.
Liste detaljer = ny Liste ( ) ;
// Tilføj 5 poster til listen.
detaljer . Tilføje ( ny Konto { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Uddannelse' ,Indtægter = 2500 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 2 , Acc_Name = 'Python' , Industri = 'Boot Camp' ,Indtægter = 10.000 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 3 , Acc_Name = 'Java' , Industri = 'Uddannelse' ,Indtægter = 500 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 4 , Acc_Name = '.NET' , Industri = 'Uddannelse' ,Indtægter = 2080 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 5 , Acc_Name = 'Oracle' , Industri = 'Job' ,Indtægter = 2090 } ) ;
// Opret en ordbog fra ovenstående liste med nøgle som Acc_ID og værdi som Acc_Name
Konsol . WriteLine ( ' ----Nøgle som Acc_ID og værdi som Acc_Name----' ) ;
Ordbogsregnskaber_dikt1 = detaljer . Til Ordbog ( j => j . Acc_ID , j => j . Acc_Name ) ;
for hver ( KeyValuePair i i konti_dikt1 )
{
Konsol . WriteLine ( 'Konto-id :' + jeg . Nøgle + ' Kontonavn :' + jeg . Værdi ) ;
}
// Opret en ordbog fra ovenstående liste med nøgle som Acc_Name og Value som omsætning
Konsol . WriteLine ( ' ----Nøgle som Acc_Name og Value as Revenue----' ) ;
Ordbogsregnskaber_dikt2 = detaljer . Til Ordbog ( l => l . Acc_Name , l => l . Indtægter ) ;
for hver ( KeyValuePair k i konti_dikt2 )
{
Konsol . WriteLine ( 'Kontonavn :' + k . Nøgle + ' Konto-omsætning:' + k . Værdi ) ;
}
}
}
// Opret klasse med navn - Konto med fire attributter
offentlig klasse Konto
{
offentlig int Acc_ID { få ; sæt ; }
offentlig snor Acc_Name { få ; sæt ; }
offentlig snor Industri { få ; sæt ; }
offentlig int Indtægter { få ; sæt ; }
}
Produktion:
Forklaring:
1. Opret en klasse med navnet 'Konto' med fire attributter.
2. I hovedklassen skal du oprette en liste af typen 'Konto' og indsætte fem poster i den.
3. Opret en ordbog fra den forrige liste med nøglen som Acc_ID og Value as Acc_Name. Her angiver vi TKey som int og TElement som streng. Inde i ToDictionary()-metoden sender vi Acc_ID i keySelector og Acc_Name i elementSelector. Til sidst bruger vi 'foreach'-løkken til at iterere ordbogen og returnere nøglerne og værdierne ved hjælp af nøgle- og værdiegenskaberne.
4. Opret en ordbog fra den forrige liste med nøglen som Acc_Name og værdien som Revenue. Her angiver vi TKey som streng og TElement som int. Inde i ToDictionary()-metoden sender vi Acc_Name i keySelector og Revenue i elementSelector. Til sidst bruger vi 'foreach'-løkken til at iterere ordbogen og returnere nøglerne og værdierne ved hjælp af nøgle- og værdiegenskaberne.
Eksempel 2: Specificeret nøglevælger
Brug den forrige kode og opret en ordbog fra den forrige liste med nøglen som Acc_ID.
ved brug af System ;ved brug af System.Linq ;
ved brug af System.Collectioner.Generisk ;
klasse Kontooplysninger
{
offentlig statisk ugyldig Hoved ( )
{
// Opret liste af type - Konto.
Liste detaljer = ny Liste ( ) ;
// Tilføj 5 poster til listen.
detaljer . Tilføje ( ny Konto { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Uddannelse' ,Indtægter = 2500 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 2 , Acc_Name = 'Python' , Industri = 'Boot Camp' ,Indtægter = 10.000 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 3 , Acc_Name = 'Java' , Industri = 'Uddannelse' ,Indtægter = 500 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 4 , Acc_Name = '.NET' , Industri = 'Uddannelse' ,Indtægter = 2080 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 5 , Acc_Name = 'Oracle' , Industri = 'Job' ,Indtægter = 2090 } ) ;
// Opret en ordbog fra ovenstående liste med nøgle som Acc_ID.
Ordbogsregnskaber_dikt = detaljer . Til Ordbog ( j => j . Acc_ID ) ;
for hver ( KeyValuePair i i konti_dikt )
{
Konsol . WriteLine ( 'Nøgle:' + jeg . Nøgle + '--> Kontonavn :' + jeg . Værdi . Acc_Name
+ 'Konto-industri:' + jeg . Værdi . Industri
+ ' Konto-omsætning:' + jeg . Værdi . Indtægter ) ;
}
}
}
// Opret klasse med navn - Konto med fire attributter
offentlig klasse Konto
{
offentlig int Acc_ID { få ; sæt ; }
offentlig snor Acc_Name { få ; sæt ; }
offentlig snor Industri { få ; sæt ; }
offentlig int Indtægter { få ; sæt ; }
}
Produktion:
Forklaring:
Her opretter vi en ordbog med nøglen som Acc_ID. Dette fungerer som nøglen til hver post i den ordbog, som vi oprettede fra listen. Derefter bruger vi 'foreach'-løkken til at få nøglerne og værdierne (med attributter) ved hjælp af nøgle- og værdiegenskaberne.
Eksempel 3: Duplicate Keys – ArgumentException
Opret en liste med to poster, og prøv at konvertere den til en ordbog med Acc_ID som nøgle.
ved brug af System ;ved brug af System.Linq ;
ved brug af System.Collectioner.Generisk ;
klasse Kontooplysninger
{
offentlig statisk ugyldig Hoved ( )
{
// Opret liste af type - Konto.
Liste detaljer = ny Liste ( ) ;
// Tilføj 2 poster til listen.
detaljer . Tilføje ( ny Konto { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Uddannelse' ,Indtægter = 2500 } ) ;
detaljer . Tilføje ( ny Konto { Acc_ID = 1 , Acc_Name = 'Python' , Industri = 'Boot Camp' ,Indtægter = 10.000 } ) ;
// Prøv at oprette en ordbog fra ovenstående liste med nøgle som Acc_ID.
Ordbogsregnskaber_dikt = detaljer . Til Ordbog ( j => j . Acc_ID ) ;
}
}
// Opret klasse med navn - Konto med fire attributter
offentlig klasse Konto
{
offentlig int Acc_ID { få ; sæt ; }
offentlig snor Acc_Name { få ; sæt ; }
offentlig snor Industri { få ; sæt ; }
offentlig int Indtægter { få ; sæt ; }
}
Undtagelse:
En uhåndteret undtagelse, som er System.ArgumentException, er rejst, da nøglen er duplikat (1) i begge Acc_ID'erne.
Eksempel 4: Null Source – ArgumentNullException
Opret en liste med typen 'Konto', og tildel den null. Prøv at oprette en ordbog fra den forrige liste med nøglen som Acc_ID.
ved brug af System ;ved brug af System.Linq ;
ved brug af System.Collectioner.Generisk ;
klasse Kontooplysninger
{
offentlig statisk ugyldig Hoved ( )
{
// Opret liste af type - Konto og tildel null til den.
Liste detaljer = nul ;
// Prøv at oprette en ordbog fra ovenstående liste med nøgle som Acc_ID.
Ordbogsregnskaber_dikt = detaljer . Til Ordbog ( j => j . Acc_ID ) ;
}
}
// Opret klasse med navn - Konto med fire attributter
offentlig klasse Konto
{
offentlig int Acc_ID { få ; sæt ; }
offentlig snor Acc_Name { få ; sæt ; }
offentlig snor Industri { få ; sæt ; }
offentlig int Indtægter { få ; sæt ; }
}
Undtagelse:
En ubehandlet undtagelse, som er System.ArgumentNullException, er hævet, da listen er null.
Konklusion
Vi lærte, hvordan man opretter en ordbog fra IEnumerable (her er det en liste) ved hjælp af ToDictionary()-metoden i C# LINQ. Denne metode kan overbelastes på to måder. Vi diskuterede begge metoder med eksempler. Vi lærte også de to undtagelsestilfælde, der opstår ved denne metode, når datakilden/keySelector/elementSelector er nul, og nøglerne er duplikerede.