Syntax:
1. Om du vill skapa en ordlista enligt specificerade nyckelväljare och elementväljarfunktioner från den givna datakällan, överbelasta följande metod:
Parametrar:
-
- källa : Källa kan vara en IEnumerable (lista) där ordboken skapas från denna källa.
- nyckelväljare : Detta är en funktion som används för att hämta nyckeln från varje element.
- elementväljare: Detta är en funktion som används för att få elementet.
- TSource : Det här är typparametern som anger typen av datakälla.
- TKey: Detta är typparametern som anger nyckelns typ.
- TElement : Det här är typparametern som anger typen av element.
2. Om du vill skapa en ordlista enligt den angivna nyckelväljarfunktionen från den givna datakällan, överbelasta följande metod:
Parametrar:
-
- källa : Källa kan vara en IEnumerable (lista) där ordboken skapas från denna källa.
- nyckelväljare : Detta är en funktion som används för att hämta nyckeln från varje element.
- TKälla: Detta hänvisar till typen av datakälla.
- TKey : Den anger typen av nyckel.
Exempel 1: Specificerad nyckelväljare och elementväljare
Skapa en lista med typen 'Konto' som innehåller fyra attribut (Acc_ID, Acc_Name, Industry, Revenue) med fem poster.
1. Skapa en ordlista från föregående lista med nyckeln som Acc_ID och Value as Acc_Name.
2. Skapa en ordlista från föregående lista med nyckeln som Acc_Name och Value as Revenue.
använder sig av System.Linq ;
använder sig av System.Collectioner.Generisk ;
klass Kontoinformation
{
offentlig statisk tomhet Main ( )
{
// Skapa lista av typ - Konto.
Lista detaljer = ny Lista ( ) ;
// Lägg till 5 poster till listan.
detaljer . Lägg till ( ny konto { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Utbildning' ,Inkomst = 2500 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 2 , Acc_Name = 'Pytonorm' , Industri = 'Bootcamp' ,Inkomst = 10 000 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 3 , Acc_Name = 'Java' , Industri = 'Utbildning' ,Inkomst = 500 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 4 , Acc_Name = '.NETTO' , Industri = 'Träning' ,Inkomst = 2080 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 5 , Acc_Name = 'Orakel' , Industri = 'Jobb' ,Inkomst = 2090 } ) ;
// Skapa en ordbok från listan ovan med nyckel som Acc_ID och Value som Acc_Name
Trösta . Skrivlinje ( ' ----Key som Acc_ID och Value as Acc_Name----' ) ;
Ordbok konton_dikt1 = detaljer . TillDictionary ( j => j . Acc_ID , j => j . Acc_Name ) ;
för varje ( KeyValuePair i i konton_dikt1 )
{
Trösta . Skrivlinje ( 'Konto-id :' + i . Nyckel + ' Kontonamn :' + i . Värde ) ;
}
// Skapa en ordbok från listan ovan med nyckel som Acc_Name och Value som Intäkt
Trösta . Skrivlinje ( ' ----Nyckel som Acc_Name och Value as Revenue----' ) ;
Ordbok konton_dikt2 = detaljer . TillDictionary ( l => l . Acc_Name , l => l . Inkomst ) ;
för varje ( KeyValuePair k i konton_dikt2 )
{
Trösta . Skrivlinje ( 'Kontonamn :' + k . Nyckel + ' Konto-intäkter:' + k . Värde ) ;
}
}
}
// Skapa klass med namnet - Konto med fyra attribut
offentlig klass konto
{
offentlig int Acc_ID { skaffa sig ; uppsättning ; }
offentlig sträng Acc_Name { skaffa sig ; uppsättning ; }
offentlig sträng Industri { skaffa sig ; uppsättning ; }
offentlig int Inkomst { skaffa sig ; uppsättning ; }
}
Produktion:
Förklaring:
1. Skapa en klass som heter 'Konto' med fyra attribut.
2. I huvudklassen, skapa en lista av typen 'Konto' och infoga fem poster i den.
3. Skapa en ordlista från föregående lista med nyckeln som Acc_ID och Value as Acc_Name. Här anger vi TKey som int och TElement som sträng. Inuti metoden ToDictionary() skickar vi Acc_ID i keySelector och Acc_Name i elementSelector. Slutligen använder vi 'foreach'-loopen för att iterera ordboken och returnera nycklarna och värdena med nyckel- och värdeegenskaperna.
4. Skapa en ordlista från föregående lista med nyckeln som Acc_Name och värdet som Revenue. Här anger vi TKey som sträng och TElement som int. Inuti metoden ToDictionary() skickar vi Acc_Name i keySelector och Revenue i elementSelector. Slutligen använder vi 'foreach'-loopen för att iterera ordboken och returnera nycklarna och värdena med nyckel- och värdeegenskaperna.
Exempel 2: Specificerad nyckelväljare
Använd föregående kod och skapa en ordlista från föregående lista med nyckeln som Acc_ID.
använder sig av Systemet ;använder sig av System.Linq ;
använder sig av System.Collectioner.Generisk ;
klass Kontoinformation
{
offentlig statisk tomhet Main ( )
{
// Skapa lista av typ - Konto.
Lista detaljer = ny Lista ( ) ;
// Lägg till 5 poster till listan.
detaljer . Lägg till ( ny konto { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Utbildning' ,Inkomst = 2500 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 2 , Acc_Name = 'Pytonorm' , Industri = 'Bootcamp' ,Inkomst = 10 000 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 3 , Acc_Name = 'Java' , Industri = 'Utbildning' ,Inkomst = 500 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 4 , Acc_Name = '.NETTO' , Industri = 'Träning' ,Inkomst = 2080 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 5 , Acc_Name = 'Orakel' , Industri = 'Jobb' ,Inkomst = 2090 } ) ;
// Skapa en ordbok från listan ovan med nyckel som Acc_ID.
Ordbok konton_dikt = detaljer . TillDictionary ( j => j . Acc_ID ) ;
för varje ( KeyValuePair i i konton_dikt )
{
Trösta . Skrivlinje ( 'Nyckel:' + i . Nyckel + '--> Kontonamn :' + i . Värde . Acc_Name
+ ' Konto-industri:' + i . Värde . Industri
+ ' Konto-intäkter:' + i . Värde . Inkomst ) ;
}
}
}
// Skapa klass med namnet - Konto med fyra attribut
offentlig klass konto
{
offentlig int Acc_ID { skaffa sig ; uppsättning ; }
offentlig sträng Acc_Name { skaffa sig ; uppsättning ; }
offentlig sträng Industri { skaffa sig ; uppsättning ; }
offentlig int Inkomst { skaffa sig ; uppsättning ; }
}
Produktion:
Förklaring:
Här skapar vi en ordbok med nyckeln som Acc_ID. Detta fungerar som nyckeln för varje post i ordboken som vi skapade från listan. Efter det använder vi 'foreach'-loopen för att få nycklarna och värdena (med attribut) med nyckel- och värdeegenskaperna.
Exempel 3: Duplicera nycklar – ArgumentException
Skapa en lista med två poster och försök konvertera den till en ordbok med Acc_ID som nyckel.
använder sig av Systemet ;använder sig av System.Linq ;
använder sig av System.Collectioner.Generisk ;
klass Kontoinformation
{
offentlig statisk tomhet Main ( )
{
// Skapa lista av typ - Konto.
Lista detaljer = ny Lista ( ) ;
// Lägg till 2 poster till listan.
detaljer . Lägg till ( ny konto { Acc_ID = 1 , Acc_Name = 'Linux' , Industri = 'Utbildning' ,Inkomst = 2500 } ) ;
detaljer . Lägg till ( ny konto { Acc_ID = 1 , Acc_Name = 'Pytonorm' , Industri = 'Bootcamp' ,Inkomst = 10 000 } ) ;
// Försök att skapa en ordbok från listan ovan med nyckel som Acc_ID.
Ordbok konton_dikt = detaljer . TillDictionary ( j => j . Acc_ID ) ;
}
}
// Skapa klass med namnet - Konto med fyra attribut
offentlig klass konto
{
offentlig int Acc_ID { skaffa sig ; uppsättning ; }
offentlig sträng Acc_Name { skaffa sig ; uppsättning ; }
offentlig sträng Industri { skaffa sig ; uppsättning ; }
offentlig int Inkomst { skaffa sig ; uppsättning ; }
}
Undantag:
Ett ohanterat undantag som är System.ArgumentException höjs eftersom nyckeln är dubblett (1) i båda Acc_ID:en.
Exempel 4: Nullkälla – ArgumentNullException
Skapa en lista med typen 'Konto' och tilldela den null. Försök att skapa en ordlista från föregående lista med nyckeln som Acc_ID.
använder sig av Systemet ;använder sig av System.Linq ;
använder sig av System.Collectioner.Generisk ;
klass Kontoinformation
{
offentlig statisk tomhet Main ( )
{
// Skapa lista av typ - Konto och tilldela det null.
Lista detaljer = null ;
// Försök att skapa en ordbok från listan ovan med nyckel som Acc_ID.
Ordbok konton_dikt = detaljer . TillDictionary ( j => j . Acc_ID ) ;
}
}
// Skapa klass med namnet - Konto med fyra attribut
offentlig klass konto
{
offentlig int Acc_ID { skaffa sig ; uppsättning ; }
offentlig sträng Acc_Name { skaffa sig ; uppsättning ; }
offentlig sträng Industri { skaffa sig ; uppsättning ; }
offentlig int Inkomst { skaffa sig ; uppsättning ; }
}
Undantag:
Ett ohanterat undantag som är System.ArgumentNullException höjs eftersom listan är null.
Slutsats
Vi lärde oss hur man skapar en ordbok från IEnumerable (här är det en lista) med metoden ToDictionary() i C# LINQ. Denna metod kan överbelastas på två sätt. Vi diskuterade båda metoderna med exempel. Vi lärde oss också de två undantagsfallen som uppstår med den här metoden när datakällan/keySelector/elementSelector är null och nycklarna är dubbletter.