Převeďte C# LINQ na slovník

Prevedte C Linq Na Slovnik



V C# LINQ vytváření slovníku z System.Collections.Generic.IEnumerable je možné pomocí metody ToDictionary(). Tato metoda vytvoří slovník s z daného . The System.ArgumentNullException je vyvoláno, pokud je zdroj dat, keySelector nebo elementSelector null. Také, pokud keySelector vytvoří duplicitní klíče pro dva prvky, System.ArgumentException je hozen. V této příručce probereme, jak vytvořit slovník ze zdroje dat seznamu přetížením dvou metod.

Syntax:

1. Chcete-li vytvořit slovník podle zadaných funkcí selektoru kláves a selektoru prvků z daného zdroje dat, přetížte následující metodu:









Parametry:



    1. zdroj : Zdroj může být IEnumerable (seznam), ve kterém je slovník vytvořen z tohoto zdroje.
    2. keySelector : Toto je funkce, která se používá k získání klíče od každého prvku.
    3. elementSelector: Toto je funkce, která se používá k získání prvku.
    4. Tzdroj : Toto je parametr typu, který určuje typ zdroje dat.
    5. TKey: Toto je parametr typu, který určuje typ klíče.
    6. TElement : Toto je parametr typu, který určuje typ prvku.

2. Pokud chcete vytvořit slovník podle zadané funkce selektoru kláves z daného zdroje dat, přetížte následující metodu:





Parametry:



    1. zdroj : Zdroj může být IEnumerable (seznam), ve kterém je slovník vytvořen z tohoto zdroje.
    2. keySelector : Toto je funkce, která se používá k získání klíče od každého prvku.
    3. Tzdroj: To se týká typu zdroje dat.
    4. TKey : Určuje typ klíče.

Příklad 1: Specifikovaný klíčový volič a funkce voliče prvků

Vytvořte seznam typu „Account“, který obsahuje čtyři atributy (Acc_ID, Acc_Name, Industry, Revenue) s pěti záznamy.

1. Vytvořte slovník z předchozího seznamu s klíčem jako Acc_ID a Value jako Acc_Name.
2. Vytvořte slovník z předchozího seznamu s klíčem jako Acc_Name a Value as Revenue.

použitím Systém ;
použitím System.Linq ;
použitím System.Collections.Generic ;

třída Informace o účtu
{
veřejnost statický prázdnota Hlavní ( )
{
// Vytvořit seznam typu - Účet.
Podrobnosti seznamu = Nový Seznam ( ) ;
// Přidání 5 záznamů do seznamu.
podrobnosti . Přidat ( Nový Účet { Acc_ID = 1 , Acc_Name = 'linux' , Průmysl = 'Vzdělání' ,Příjmy = 2500 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 2 , Acc_Name = 'Krajta' , Průmysl = 'Bootcamp' ,Příjmy = 10 000 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 3 , Acc_Name = 'Jáva' , Průmysl = 'Vzdělání' ,Příjmy = 500 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 4 , Acc_Name = '.SÍŤ' , Průmysl = 'Výcvik' ,Příjmy = 2080 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 5 , Acc_Name = 'Věštec' , Průmysl = 'Práce' ,Příjmy = 2090 } ) ;

// Vytvořte slovník z výše uvedeného seznamu s klíčem jako Acc_ID a hodnotou jako Acc_Name
Řídicí panel . WriteLine ( ' ----Klíč jako Acc_ID a Value jako Acc_Name----' ) ;
Slovník účty_dikt1 = podrobnosti . ToDictionary ( j => j . Acc_ID , j => j . Acc_Name ) ;

pro každého ( KeyValuePair i v account_dict1 )
{
Řídicí panel . WriteLine ( 'Číslo účtu :' + i . Klíč + ' Jméno účtu :' + i . Hodnota ) ;
}

// Vytvořte slovník z výše uvedeného seznamu s klíčem jako Acc_Name a Value jako Revenue
Řídicí panel . WriteLine ( ' ----Key jako Acc_Name a Value as Revenue----' ) ;
Slovník účty_dikt2 = podrobnosti . ToDictionary ( l => l . Acc_Name , l => l . Příjmy ) ;

pro každého ( KeyValuePair k v account_dict2 )
{
Řídicí panel . WriteLine ( 'Jméno účtu :' + k . Klíč + 'Příjmy z účtu:' + k . Hodnota ) ;
}

}
}

// Vytvořte třídu s názvem - Účet se čtyřmi atributy
veřejnost třída Účet
{
veřejnost int Acc_ID { dostat ; soubor ; }
veřejnost tětiva Acc_Name { dostat ; soubor ; }
veřejnost tětiva Průmysl { dostat ; soubor ; }
veřejnost int Příjmy { dostat ; soubor ; }
}

Výstup:

Vysvětlení:

1. Vytvořte třídu s názvem „Účet“ se čtyřmi atributy.

2. V hlavní třídě vytvořte seznam typu „Účet“ a vložte do něj pět záznamů.

3. Vytvořte slovník z předchozího seznamu s klíčem jako Acc_ID a Value jako Acc_Name. Zde specifikujeme TKey jako int a TElement jako řetězec. Uvnitř metody ToDictionary() předáme Acc_ID v keySelector a Acc_Name v elementSelector. Nakonec použijeme smyčku „foreach“ k iteraci slovníku a vrácení klíčů a hodnot pomocí vlastností klíče a hodnoty.

4. Vytvořte slovník z předchozího seznamu s klíčem jako Acc_Name a hodnotou jako Revenue. Zde specifikujeme TKey jako řetězec a TElement jako int. Uvnitř metody ToDictionary() předáme Acc_Name v keySelector a Revenue v elementSelector. Nakonec použijeme smyčku „foreach“ k iteraci slovníku a vrácení klíčů a hodnot pomocí vlastností klíče a hodnoty.

Příklad 2: Specifikovaný klíčový volič

Použijte předchozí kód a vytvořte slovník z předchozího seznamu s klíčem jako Acc_ID.

použitím Systém ;
použitím System.Linq ;
použitím System.Collections.Generic ;

třída Informace o účtu
{
veřejnost statický prázdnota Hlavní ( )
{
// Vytvořit seznam typu - Účet.
Podrobnosti seznamu = Nový Seznam ( ) ;
// Přidání 5 záznamů do seznamu.
podrobnosti . Přidat ( Nový Účet { Acc_ID = 1 , Acc_Name = 'linux' , Průmysl = 'Vzdělání' ,Příjmy = 2500 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 2 , Acc_Name = 'Krajta' , Průmysl = 'Bootcamp' ,Příjmy = 10 000 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 3 , Acc_Name = 'Jáva' , Průmysl = 'Vzdělání' ,Příjmy = 500 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 4 , Acc_Name = '.SÍŤ' , Průmysl = 'Výcvik' ,Příjmy = 2080 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 5 , Acc_Name = 'Věštec' , Průmysl = 'Práce' ,Příjmy = 2090 } ) ;

// Vytvořte slovník z výše uvedeného seznamu s klíčem jako Acc_ID.
Slovník účty_dikt = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;
pro každého ( KeyValuePair i v accounts_dict )
{
Řídicí panel . WriteLine ( 'Klíč:' + i . Klíč + '-->  Název účtu:' + i . Hodnota . Acc_Name
+ 'Odvětví účtů:' + i . Hodnota . Průmysl
+ 'Příjmy z účtu:' + i . Hodnota . Příjmy ) ;
}

}
}

// Vytvořte třídu s názvem - Účet se čtyřmi atributy
veřejnost třída Účet
{
veřejnost int Acc_ID { dostat ; soubor ; }
veřejnost tětiva Acc_Name { dostat ; soubor ; }
veřejnost tětiva Průmysl { dostat ; soubor ; }
veřejnost int Příjmy { dostat ; soubor ; }
}

Výstup:

Vysvětlení:

Zde vytvoříme slovník s klíčem jako Acc_ID. Toto funguje jako klíč pro každý záznam ve slovníku, který jsme vytvořili ze seznamu. Poté pomocí smyčky „foreach“ získáme klíče a hodnoty (s atributy) pomocí vlastností klíče a hodnoty.

Příklad 3: Duplicitní klíče – ArgumentException

Vytvořte seznam se dvěma záznamy a zkuste jej převést do slovníku s klíčem Acc_ID.

použitím Systém ;
použitím System.Linq ;
použitím System.Collections.Generic ;

třída Informace o účtu
{
veřejnost statický prázdnota Hlavní ( )
{
// Vytvořit seznam typu - Účet.
Podrobnosti seznamu = Nový Seznam ( ) ;
// Přidání 2 záznamů do seznamu.
podrobnosti . Přidat ( Nový Účet { Acc_ID = 1 , Acc_Name = 'linux' , Průmysl = 'Vzdělání' ,Příjmy = 2500 } ) ;
podrobnosti . Přidat ( Nový Účet { Acc_ID = 1 , Acc_Name = 'Krajta' , Průmysl = 'Bootcamp' ,Příjmy = 10 000 } ) ;

// Pokuste se vytvořit slovník z výše uvedeného seznamu s klíčem jako Acc_ID.
Slovník účty_dikt = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;

}
}

// Vytvořte třídu s názvem - Účet se čtyřmi atributy
veřejnost třída Účet
{
veřejnost int Acc_ID { dostat ; soubor ; }
veřejnost tětiva Acc_Name { dostat ; soubor ; }
veřejnost tětiva Průmysl { dostat ; soubor ; }
veřejnost int Příjmy { dostat ; soubor ; }
}

Výjimka:

Je vyvolána neošetřená výjimka, kterou je System.ArgumentException, protože klíč je duplicitní (1) v obou Acc_ID.

Příklad 4: Null Source – ArgumentNullException

Vytvořte seznam typu „Účet“ a přiřaďte mu hodnotu null. Zkuste vytvořit slovník z předchozího seznamu s klíčem jako Acc_ID.

použitím Systém ;
použitím System.Linq ;
použitím System.Collections.Generic ;

třída Informace o účtu
{
veřejnost statický prázdnota Hlavní ( )
{
// Vytvořte seznam typu - Účet a přiřaďte mu hodnotu null.
Podrobnosti seznamu = nula ;

// Pokuste se vytvořit slovník z výše uvedeného seznamu s klíčem jako Acc_ID.
Slovník účty_dikt = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;

}
}

// Vytvořte třídu s názvem - Účet se čtyřmi atributy
veřejnost třída Účet
{
veřejnost int Acc_ID { dostat ; soubor ; }
veřejnost tětiva Acc_Name { dostat ; soubor ; }
veřejnost tětiva Průmysl { dostat ; soubor ; }
veřejnost int Příjmy { dostat ; soubor ; }
}

Výjimka:

Neošetřená výjimka, která je System.ArgumentNullException, je vyvolána, protože seznam má hodnotu null.

Závěr

Naučili jsme se, jak vytvořit slovník z IEnumerable (zde je to seznam) pomocí metody ToDictionary() v C# LINQ. Tato metoda může být přetížena dvěma způsoby. Oba způsoby jsme probrali na příkladech. Také jsme se naučili dva případy výjimek, které jsou vyvolány touto metodou, když je zdroj dat/keySelector/prvekSelector null a klíče jsou duplicitní.