Konverter C# LINQ til ordbog

Konverter C Linq Til Ordbog



I C# LINQ oprettes en ordbog fra System.Collections.Generic.IEnumerable er muligt ved hjælp af ToDictionary() metoden. Denne metode opretter en ordbog med fra den givne . Det System.ArgumentNullException kastes, hvis datakilden, keySelector eller elementSelector er null. Også, hvis keySelector producerer duplikerede nøgler til to elementer System.ArgumentException bliver kastet. I denne vejledning vil vi diskutere, hvordan man opretter en ordbog fra listens datakilde ved at overbelaste to metoder.

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:



    1. kilde : Kilde kan være en IEnumerable (liste), hvori ordbogen er oprettet fra denne kilde.
    2. nøglevælger : Dette er en funktion, som bruges til at hente nøglen fra hvert element.
    3. elementvælger: Dette er en funktion, som bruges til at få elementet.
    4. TSource : Dette er typeparameteren, der specificerer typen af ​​datakilden.
    5. T-nøgle: Dette er typeparameteren, der specificerer nøglens type.
    6. 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:



    1. kilde : Kilde kan være en IEnumerable (liste), hvori ordbogen er oprettet fra denne kilde.
    2. nøglevælger : Dette er en funktion, som bruges til at hente nøglen fra hvert element.
    3. TKilde: Dette refererer til typen af ​​datakilde.
    4. 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 ;
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 { ; sæt ; }
offentlig snor Acc_Name { ; sæt ; }
offentlig snor Industri { ; sæt ; }
offentlig int Indtægter { ; 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 { ; sæt ; }
offentlig snor Acc_Name { ; sæt ; }
offentlig snor Industri { ; sæt ; }
offentlig int Indtægter { ; 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 { ; sæt ; }
offentlig snor Acc_Name { ; sæt ; }
offentlig snor Industri { ; sæt ; }
offentlig int Indtægter { ; 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 { ; sæt ; }
offentlig snor Acc_Name { ; sæt ; }
offentlig snor Industri { ; sæt ; }
offentlig int Indtægter { ; 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.