Konvertera C# LINQ till ordbok

Konvertera C Linq Till Ordbok



I C# LINQ, skapa en ordbok från System.Collections.Generic.IEnumerable är möjligt med ToDictionary()-metoden. Denna metod skapar en ordlista med från den givna . De System.ArgumentNullException kastas om datakällan, keySelector eller elementSelector är null. Dessutom, om keySelector producerar dubbletter av nycklar för två element, System.ArgumentException kastas. I den här guiden kommer vi att diskutera hur man skapar en ordbok från listdatakällan genom att överbelasta två metoder.

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:



    1. källa : Källa kan vara en IEnumerable (lista) där ordboken skapas från denna källa.
    2. nyckelväljare : Detta är en funktion som används för att hämta nyckeln från varje element.
    3. elementväljare: Detta är en funktion som används för att få elementet.
    4. TSource : Det här är typparametern som anger typen av datakälla.
    5. TKey: Detta är typparametern som anger nyckelns typ.
    6. 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:



    1. källa : Källa kan vara en IEnumerable (lista) där ordboken skapas från denna källa.
    2. nyckelväljare : Detta är en funktion som används för att hämta nyckeln från varje element.
    3. TKälla: Detta hänvisar till typen av datakälla.
    4. 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 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 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.