Syntaks:
1. Hvis du vil lage en ordbok i henhold til spesifiserte nøkkelvelger- og elementvelgerfunksjoner fra den gitte datakilden, overbelast følgende metode:
Parametere:
-
- kilde : Kilde kan være en IEnumerable (liste) der ordboken er opprettet fra denne kilden.
- nøkkelvelger : Dette er en funksjon som brukes til å hente nøkkelen fra hvert element.
- elementvelger: Dette er en funksjon som brukes til å hente elementet.
- TSource : Dette er typeparameteren som spesifiserer typen av datakilden.
- TKey: Dette er typeparameteren som spesifiserer nøkkeltypen.
- TElement : Dette er typeparameteren som spesifiserer typen element.
2. Hvis du vil lage en ordbok i henhold til den angitte nøkkelvelgerfunksjonen fra den gitte datakilden, overbelast følgende metode:
Parametere:
-
- kilde : Kilde kan være en IEnumerable (liste) der ordboken er opprettet fra denne kilden.
- nøkkelvelger : Dette er en funksjon som brukes til å hente nøkkelen fra hvert element.
- TKilde: Dette refererer til typen datakilde.
- TKey : Den spesifiserer nøkkeltypen.
Eksempel 1: Spesifisert nøkkelvelger og elementvelgerfunksjon
Lag en liste med 'Konto'-typen som inneholder fire attributter (Acc_ID, Acc_Name, Industry, Revenue) med fem poster.
1. Lag en ordbok fra forrige liste med nøkkelen som Acc_ID og Value as Acc_Name.
2. Lag en ordbok fra forrige liste med nøkkelen som Acc_Name og Value as Revenue.
ved hjelp av System.Linq ;
ved hjelp av System.Samlinger.Generisk ;
klasse Kontoinformasjon
{
offentlig statisk tomrom Hoved ( )
{
// Opprett liste av type - Konto.
Liste detaljer = ny Liste ( ) ;
// Legg til 5 poster til listen.
detaljer . Legg til ( ny Regnskap { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Utdanning' ,Inntekter = 2500 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 2 , Acc_Name = 'Python' , Industri = 'Førstegangs tjeneste' ,Inntekter = 10 000 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 3 , Acc_Name = 'Java' , Industri = 'Utdanning' ,Inntekter = 500 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 4 , Acc_Name = '.NETT' , Industri = 'Opplæring' ,Inntekter = 2080 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 5 , Acc_Name = 'Oracle' , Industri = 'Jobb' ,Inntekter = 2090 } ) ;
// Lag en ordbok fra listen ovenfor med nøkkel som Acc_ID og Value som Acc_Name
Konsoll . WriteLine ( ' ----Nøkkel som Acc_ID og Value as Acc_Name----' ) ;
Ordbok kontoer_dikt1 = detaljer . TilDictionary ( j => j . Acc_ID , j => j . Acc_Name ) ;
for hver ( KeyValuePair i i kontoer_dikt1 )
{
Konsoll . WriteLine ( 'Konto-ID:' + Jeg . Nøkkel + ' Brukernavn :' + Jeg . Verdi ) ;
}
// Lag en ordbok fra listen ovenfor med nøkkel som Acc_Name og Value som inntekt
Konsoll . WriteLine ( ' ----Nøkkel som Acc_Name og Value as Revenue----' ) ;
Ordbok kontoer_dikt2 = detaljer . TilDictionary ( l => l . Acc_Name , l => l . Inntekter ) ;
for hver ( KeyValuePair k i kontoer_dikt2 )
{
Konsoll . WriteLine ( 'Brukernavn :' + k . Nøkkel + 'Kontoinntekter:' + k . Verdi ) ;
}
}
}
// Opprett klasse med navn - Konto med fire attributter
offentlig klasse Regnskap
{
offentlig int Acc_ID { få ; sett ; }
offentlig streng Acc_Name { få ; sett ; }
offentlig streng Industri { få ; sett ; }
offentlig int Inntekter { få ; sett ; }
}
Produksjon:
Forklaring:
1. Opprett en klasse kalt 'Konto' med fire attributter.
2. I hovedklassen oppretter du en liste av typen 'Konto' og setter inn fem poster i den.
3. Lag en ordbok fra forrige liste med nøkkelen som Acc_ID og Value as Acc_Name. Her spesifiserer vi TKey som int og TElement som streng. Inne i ToDictionary()-metoden sender vi Acc_ID i keySelector og Acc_Name i elementSelector. Til slutt bruker vi 'foreach'-løkken for å iterere ordboken og returnere nøklene og verdiene ved å bruke nøkkel- og verdiegenskapene.
4. Lag en ordbok fra forrige liste med nøkkelen som Acc_Name og verdien som Revenue. Her spesifiserer vi TKey som streng og TElement som int. Inne i ToDictionary()-metoden sender vi Acc_Name i keySelector og Revenue i elementSelector. Til slutt bruker vi 'foreach'-løkken for å iterere ordboken og returnere nøklene og verdiene ved å bruke nøkkel- og verdiegenskapene.
Eksempel 2: Spesifisert nøkkelvelger
Bruk forrige kode og lag en ordbok fra forrige liste med nøkkelen som Acc_ID.
ved hjelp av System ;ved hjelp av System.Linq ;
ved hjelp av System.Samlinger.Generisk ;
klasse Kontoinformasjon
{
offentlig statisk tomrom Hoved ( )
{
// Opprett liste av type - Konto.
Liste detaljer = ny Liste ( ) ;
// Legg til 5 poster til listen.
detaljer . Legg til ( ny Regnskap { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Utdanning' ,Inntekter = 2500 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 2 , Acc_Name = 'Python' , Industri = 'Førstegangs tjeneste' ,Inntekter = 10 000 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 3 , Acc_Name = 'Java' , Industri = 'Utdanning' ,Inntekter = 500 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 4 , Acc_Name = '.NETT' , Industri = 'Opplæring' ,Inntekter = 2080 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 5 , Acc_Name = 'Oracle' , Industri = 'Jobb' ,Inntekter = 2090 } ) ;
// Lag en ordbok fra listen ovenfor med nøkkel som Acc_ID.
Ordbok kontoer_dikt = detaljer . TilDictionary ( j => j . Acc_ID ) ;
for hver ( KeyValuePair i i kontoer_dikt )
{
Konsoll . WriteLine ( 'Nøkkel:' + Jeg . Nøkkel + '--> Kontonavn :' + Jeg . Verdi . Acc_Name
+ ' Konto-industri:' + Jeg . Verdi . Industri
+ 'Kontoinntekter:' + Jeg . Verdi . Inntekter ) ;
}
}
}
// Opprett klasse med navn - Konto med fire attributter
offentlig klasse Regnskap
{
offentlig int Acc_ID { få ; sett ; }
offentlig streng Acc_Name { få ; sett ; }
offentlig streng Industri { få ; sett ; }
offentlig int Inntekter { få ; sett ; }
}
Produksjon:
Forklaring:
Her lager vi en ordbok med nøkkelen som Acc_ID. Dette fungerer som nøkkelen for hver post i ordboken som vi opprettet fra listen. Etter det bruker vi 'foreach'-løkken for å få nøklene og verdiene (med attributter) ved å bruke nøkkel- og verdiegenskapene.
Eksempel 3: Dupliserte nøkler – ArgumentException
Lag en liste med to poster og prøv å konvertere den til en ordbok med Acc_ID som nøkkel.
ved hjelp av System ;ved hjelp av System.Linq ;
ved hjelp av System.Samlinger.Generisk ;
klasse Kontoinformasjon
{
offentlig statisk tomrom Hoved ( )
{
// Opprett liste av type - Konto.
Liste detaljer = ny Liste ( ) ;
// Legg til 2 poster til listen.
detaljer . Legg til ( ny Regnskap { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Utdanning' ,Inntekter = 2500 } ) ;
detaljer . Legg til ( ny Regnskap { Acc_ID = 1 , Acc_Name = 'Python' , Industri = 'Førstegangs tjeneste' ,Inntekter = 10 000 } ) ;
// Prøv å lage en ordbok fra listen ovenfor med nøkkel som Acc_ID.
Ordbok kontoer_dikt = detaljer . TilDictionary ( j => j . Acc_ID ) ;
}
}
// Opprett klasse med navn - Konto med fire attributter
offentlig klasse Regnskap
{
offentlig int Acc_ID { få ; sett ; }
offentlig streng Acc_Name { få ; sett ; }
offentlig streng Industri { få ; sett ; }
offentlig int Inntekter { få ; sett ; }
}
Unntak:
Et ubehandlet unntak som er System.ArgumentException er hevet siden nøkkelen er duplikat (1) i begge Acc_ID-ene.
Eksempel 4: Nullkilde – ArgumentNullException
Lag en liste med 'Konto'-typen og tilordne null til den. Prøv å lage en ordbok fra forrige liste med nøkkelen som Acc_ID.
ved hjelp av System ;ved hjelp av System.Linq ;
ved hjelp av System.Samlinger.Generisk ;
klasse Kontoinformasjon
{
offentlig statisk tomrom Hoved ( )
{
// Opprett liste av type - Konto og tilordne null til den.
Liste detaljer = null ;
// Prøv å lage en ordbok fra listen ovenfor med nøkkel som Acc_ID.
Ordbok kontoer_dikt = detaljer . TilDictionary ( j => j . Acc_ID ) ;
}
}
// Opprett klasse med navn - Konto med fire attributter
offentlig klasse Regnskap
{
offentlig int Acc_ID { få ; sett ; }
offentlig streng Acc_Name { få ; sett ; }
offentlig streng Industri { få ; sett ; }
offentlig int Inntekter { få ; sett ; }
}
Unntak:
Et ubehandlet unntak som er System.ArgumentNullException er hevet siden listen er null.
Konklusjon
Vi lærte hvordan du lager en ordbok fra IEnumerable (her er det en liste) ved å bruke ToDictionary()-metoden i C# LINQ. Denne metoden kan overbelastes på to måter. Vi diskuterte begge metodene med eksempler. Vi lærte også de to unntakstilfellene som oppstår med denne metoden når datakilden/keySelector/elementSelector er null og nøklene er dupliserte.