Syntax:
1. Ak chcete vytvoriť slovník podľa špecifikovaných funkcií selektora kľúča a selektora prvkov z daného zdroja údajov, preťažte nasledujúcu metódu:
Parametre:
-
- zdroj : Zdroj môže byť IEnumerable (zoznam), v ktorom je slovník vytvorený z tohto zdroja.
- keySelector : Toto je funkcia, ktorá sa používa na získanie kľúča od každého prvku.
- elementSelector: Toto je funkcia, ktorá sa používa na získanie prvku.
- Tzdroj : Toto je parameter typu, ktorý určuje typ zdroja údajov.
- TKey: Toto je parameter typu, ktorý určuje typ kľúča.
- TElement : Toto je parameter typu, ktorý určuje typ prvku.
2. Ak chcete vytvoriť slovník podľa zadanej funkcie selektora kľúča z daného zdroja údajov, preťažte nasledujúcu metódu:
Parametre:
-
- zdroj : Zdroj môže byť IEnumerable (zoznam), v ktorom je slovník vytvorený z tohto zdroja.
- keySelector : Toto je funkcia, ktorá sa používa na získanie kľúča od každého prvku.
- Tzdroj: Týka sa to typu zdroja údajov.
- TKey : Určuje typ kľúča.
Príklad 1: Špecifikovaný kľúčový volič a funkcia voliča prvkov
Vytvorte zoznam s typom „Účet“, ktorý obsahuje štyri atribúty (ID_účtu, názov_účtu, odvetvie, výnosy) s piatimi záznamami.
1. Vytvorte slovník z predchádzajúceho zoznamu s kľúčom ako Acc_ID a Value ako Acc_Name.
2. Vytvorte slovník z predchádzajúceho zoznamu s kľúčom ako Acc_Name a Value ako Revenue.
použitím System.Linq ;
použitím System.Collections.Generic ;
trieda Informácie o účte
{
verejnosti statické neplatné Hlavná ( )
{
// Vytvorenie zoznamu typu - Účet.
Podrobnosti zoznamu = Nový Zoznam ( ) ;
// Pridanie 5 záznamov do zoznamu.
podrobnosti . Pridať ( Nový účtu { Acc_ID = 1 , Acc_Name = 'linux' , Priemysel = 'vzdelávanie' ,Príjmy = 2500 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 2 , Acc_Name = 'Python' , Priemysel = 'Bootcamp' ,Príjmy = 10 000 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 3 , Acc_Name = 'Java' , Priemysel = 'vzdelávanie' ,Príjmy = 500 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 4 , Acc_Name = '.NET' , Priemysel = 'školenie' ,Príjmy = 2080 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 5 , Acc_Name = 'Oracle' , Priemysel = 'práca' ,Príjmy = 2090 } ) ;
// Vytvorte slovník z vyššie uvedeného zoznamu s kľúčom ako Acc_ID a hodnotou ako Acc_Name
Konzola . WriteLine ( ' ----Kľúč ako Acc_ID a Hodnota ako Acc_Name ----' ) ;
Slovník accounts_dict1 = podrobnosti . ToDictionary ( j => j . Acc_ID , j => j . Acc_Name ) ;
pre každý ( KeyValuePair i v accounts_dict1 )
{
Konzola . WriteLine ( 'Číslo účtu :' + i . kľúč + ' Názov účtu :' + i . Hodnota ) ;
}
// Vytvorte slovník z vyššie uvedeného zoznamu s kľúčom ako Acc_Name a Value ako Revenue
Konzola . WriteLine ( ' ----Kľúč ako názov_účtu a hodnota ako výnos ----' ) ;
Slovník accounts_dict2 = podrobnosti . ToDictionary ( l => l . Acc_Name , l => l . Výnosy ) ;
pre každý ( KeyValuePair k v accounts_dict2 )
{
Konzola . WriteLine ( 'Názov účtu :' + k . kľúč + 'Výnosy účtu:' + k . Hodnota ) ;
}
}
}
// Vytvorenie triedy s názvom - Účet so štyrmi atribútmi
verejnosti trieda účtu
{
verejnosti int Acc_ID { dostať ; nastaviť ; }
verejnosti reťazec Acc_Name { dostať ; nastaviť ; }
verejnosti reťazec priemysel { dostať ; nastaviť ; }
verejnosti int Výnosy { dostať ; nastaviť ; }
}
Výkon:
Vysvetlenie:
1. Vytvorte triedu s názvom „Účet“ so štyrmi atribútmi.
2. V hlavnej triede vytvorte zoznam typu „Účet“ a vložte doň päť záznamov.
3. Vytvorte slovník z predchádzajúceho zoznamu s kľúčom ako Acc_ID a Value ako Acc_Name. Tu špecifikujeme TKey ako int a TElement ako reťazec. V rámci metódy ToDictionary() odovzdávame Acc_ID v keySelector a Acc_Name v elementSelector. Nakoniec použijeme cyklus „foreach“ na iteráciu slovníka a vrátenie kľúčov a hodnôt pomocou vlastností kľúča a hodnoty.
4. Vytvorte slovník z predchádzajúceho zoznamu s kľúčom ako Acc_Name a hodnotou ako Revenue. Tu špecifikujeme TKey ako reťazec a TElement ako int. V rámci metódy ToDictionary() odovzdávame Acc_Name v keySelector a Revenue v elementSelector. Nakoniec použijeme cyklus „foreach“ na iteráciu slovníka a vrátenie kľúčov a hodnôt pomocou vlastností kľúča a hodnoty.
Príklad 2: Špecifikovaný kľúčový volič
Použite predchádzajúci kód a vytvorte slovník z predchádzajúceho zoznamu s kľúčom ako Acc_ID.
použitím Systém ;použitím System.Linq ;
použitím System.Collections.Generic ;
trieda Informácie o účte
{
verejnosti statické neplatné Hlavná ( )
{
// Vytvorenie zoznamu typu - Účet.
Podrobnosti zoznamu = Nový Zoznam ( ) ;
// Pridanie 5 záznamov do zoznamu.
podrobnosti . Pridať ( Nový účtu { Acc_ID = 1 , Acc_Name = 'linux' , Priemysel = 'vzdelávanie' ,Príjmy = 2500 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 2 , Acc_Name = 'Python' , Priemysel = 'Bootcamp' ,Príjmy = 10 000 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 3 , Acc_Name = 'Java' , Priemysel = 'vzdelávanie' ,Príjmy = 500 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 4 , Acc_Name = '.NET' , Priemysel = 'školenie' ,Príjmy = 2080 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 5 , Acc_Name = 'Oracle' , Priemysel = 'práca' ,Príjmy = 2090 } ) ;
// Vytvorte slovník z vyššie uvedeného zoznamu s kľúčom ako Acc_ID.
Slovník účty_dikt = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;
pre každý ( KeyValuePair i v accounts_dict )
{
Konzola . WriteLine ( 'Kľúč:' + i . kľúč + '--> Názov-účtu :' + i . Hodnota . Acc_Name
+ 'Odvetvie účtovníctva:' + i . Hodnota . priemysel
+ 'Výnosy účtu:' + i . Hodnota . Výnosy ) ;
}
}
}
// Vytvorenie triedy s názvom - Účet so štyrmi atribútmi
verejnosti trieda účtu
{
verejnosti int Acc_ID { dostať ; nastaviť ; }
verejnosti reťazec Acc_Name { dostať ; nastaviť ; }
verejnosti reťazec priemysel { dostať ; nastaviť ; }
verejnosti int Výnosy { dostať ; nastaviť ; }
}
Výkon:
Vysvetlenie:
Tu vytvoríme slovník s kľúčom ako Acc_ID. Toto funguje ako kľúč pre každý záznam v slovníku, ktorý sme vytvorili zo zoznamu. Potom použijeme cyklus „foreach“ na získanie kľúčov a hodnôt (s atribútmi) pomocou vlastností kľúča a hodnoty.
Príklad 3: Duplicitné kľúče – ArgumentException
Vytvorte zoznam s dvoma záznamami a skúste ho previesť do slovníka s kľúčom Acc_ID.
použitím Systém ;použitím System.Linq ;
použitím System.Collections.Generic ;
trieda Informácie o účte
{
verejnosti statické neplatné Hlavná ( )
{
// Vytvorenie zoznamu typu - Účet.
Podrobnosti zoznamu = Nový Zoznam ( ) ;
// Pridanie 2 záznamov do zoznamu.
podrobnosti . Pridať ( Nový účtu { Acc_ID = 1 , Acc_Name = 'linux' , Priemysel = 'vzdelávanie' ,Príjmy = 2500 } ) ;
podrobnosti . Pridať ( Nový účtu { Acc_ID = 1 , Acc_Name = 'Python' , Priemysel = 'Bootcamp' ,Príjmy = 10 000 } ) ;
// Skúste vytvoriť slovník z vyššie uvedeného zoznamu s kľúčom ako Acc_ID.
Slovník účty_dikt = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;
}
}
// Vytvorenie triedy s názvom - Účet so štyrmi atribútmi
verejnosti trieda účtu
{
verejnosti int Acc_ID { dostať ; nastaviť ; }
verejnosti reťazec Acc_Name { dostať ; nastaviť ; }
verejnosti reťazec priemysel { dostať ; nastaviť ; }
verejnosti int Výnosy { dostať ; nastaviť ; }
}
Výnimka:
Nespracovaná výnimka, ktorou je System.ArgumentException, je vyvolaná, pretože kľúč je duplicitný (1) v oboch Acc_ID.
Príklad 4: Null Source – ArgumentNullException
Vytvorte zoznam s typom „Účet“ a priraďte mu hodnotu null. Skúste vytvoriť slovník z predchádzajúceho zoznamu s kľúčom ako Acc_ID.
použitím Systém ;použitím System.Linq ;
použitím System.Collections.Generic ;
trieda Informácie o účte
{
verejnosti statické neplatné Hlavná ( )
{
// Vytvorte zoznam typu - Účet a priraďte mu hodnotu null.
Podrobnosti zoznamu = nulový ;
// Skúste vytvoriť slovník z vyššie uvedeného zoznamu s kľúčom ako Acc_ID.
Slovník účty_dikt = podrobnosti . ToDictionary ( j => j . Acc_ID ) ;
}
}
// Vytvorenie triedy s názvom - Účet so štyrmi atribútmi
verejnosti trieda účtu
{
verejnosti int Acc_ID { dostať ; nastaviť ; }
verejnosti reťazec Acc_Name { dostať ; nastaviť ; }
verejnosti reťazec priemysel { dostať ; nastaviť ; }
verejnosti int Výnosy { dostať ; nastaviť ; }
}
Výnimka:
Neošetrená výnimka, ktorou je System.ArgumentNullException, je vyvolaná, pretože zoznam je null.
Záver
Naučili sme sa, ako vytvoriť slovník z IEnumerable (tu je to zoznam) pomocou metódy ToDictionary() v C# LINQ. Táto metóda môže byť preťažená dvoma spôsobmi. Obe metódy sme rozobrali na príkladoch. Tiež sme sa naučili dva prípady výnimiek, ktoré táto metóda vyvoláva, keď je zdroj údajov/keySelector/prvokSelector nulový a kľúče sú duplicitné.