Preveďte C# LINQ na slovník

Prevedte C Linq Na Slovnik



V C# LINQ vytváranie slovníka z System.Collections.Generic.IEnumerable je možné pomocou metódy ToDictionary(). Táto metóda vytvorí slovník s z daného . The System.ArgumentNullException sa vyvolá, ak je zdroj údajov, keySelector alebo elementSelector null. Tiež, ak keySelector vytvorí duplicitné kľúče pre dva prvky, System.ArgumentException je hodený. V tejto príručke budeme diskutovať o tom, ako vytvoriť slovník zo zdroja údajov zoznamu preťažením dvoch metód.

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:



    1. zdroj : Zdroj môže byť IEnumerable (zoznam), v ktorom je slovník vytvorený z tohto zdroja.
    2. keySelector : Toto je funkcia, ktorá sa používa na získanie kľúča od každého prvku.
    3. elementSelector: Toto je funkcia, ktorá sa používa na získanie prvku.
    4. Tzdroj : Toto je parameter typu, ktorý určuje typ zdroja údajov.
    5. TKey: Toto je parameter typu, ktorý určuje typ kľúča.
    6. 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:



    1. zdroj : Zdroj môže byť IEnumerable (zoznam), v ktorom je slovník vytvorený z tohto zdroja.
    2. keySelector : Toto je funkcia, ktorá sa používa na získanie kľúča od každého prvku.
    3. Tzdroj: Týka sa to typu zdroja údajov.
    4. 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 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 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é.