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:
-
- zdroj : Zdroj může být IEnumerable (seznam), ve kterém je slovník vytvořen z tohoto zdroje.
- keySelector : Toto je funkce, která se používá k získání klíče od každého prvku.
- elementSelector: Toto je funkce, která se používá k získání prvku.
- Tzdroj : Toto je parametr typu, který určuje typ zdroje dat.
- TKey: Toto je parametr typu, který určuje typ klíče.
- 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:
-
- zdroj : Zdroj může být IEnumerable (seznam), ve kterém je slovník vytvořen z tohoto zdroje.
- keySelector : Toto je funkce, která se používá k získání klíče od každého prvku.
- Tzdroj: To se týká typu zdroje dat.
- 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 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í.