Metoda C# ToDictionary

Metoda C Todictionary



Funkce ToDictionary v C# je funkce rozšíření LINQ, která umožňuje transformovat sbírku dat do slovníku, který nabízí jasný a praktický způsob mapování entit na odlišné klíče a související hodnoty. Vyžaduje dva argumenty, dva delegáty nebo výrazy lambda, jeden pro výběr klíče a další pro výběr hodnoty pro každý objekt v kolekci. V tomto článku použijeme některé příklady kódu C# k demonstraci použití funkce ToDictionary.

Syntax:

Pojďme si rozebrat a pochopit každou komponentu, která je poskytována v rámci následující syntaxe funkce C# ToDictionary, jednu po druhé:



byl diktát = sbírka. ToDictionary ( keySelector , elementSelector ) ;
  • Klíčové slovo „var“ je zde vynecháno, aby se definovala kategorie typu výsledného slovníku „diktát“. Ve většině případů je to Dictionary, kde K je typ klíče a V je kategorie typu hodnoty slovníku.
  • Element „collection“ představuje zdrojovou kolekci, kterou chcete převést na slovník „diktát“. Může to být jakákoli třída, která implementuje rozhraní IEnumerable, jako je seznam, pole nebo výsledek dotazu.
  • Klíčové slovo „keySelector“ je delegát nebo výraz lambda, který určuje, jak extrahovat klíč z každé položky v kolekci. Získá prvek z kolekce jako argument a vrátí hodnotu klíče pro tuto položku. Klíč by měl být jedinečný pro každou položku v kolekci, protože slovníky nemohou mít duplicitní klíče.
  • Klíčové slovo „elementSelector“ odkazuje na delegát nebo výraz lambda, který určuje, jak extrahovat hodnotu z každé položky v kolekci. Získá také prvek kolekce jako argument a získá hodnotu pro tuto položku.

Po provedení funkce ToDictionary budete mít nový objekt slovníku, kde je každá položka z kolekce reprezentována jako pár klíč-hodnota.







Příklad 1:

Pojďme znovu začít s touto příručkou tím, že předvedeme použití funkce ToDictionary v C# pomocí příkladu kódu. Pojďme si to projít krok za krokem.



Kód začíná importovanými požadovanými jmennými prostory: System, System.Collections.Generic a System.Linq. Tyto jmenné prostory poskytují nezbytné třídy a metody rozšíření pro práci s kolekcemi a LINQ. Je definována třída „Dummy“, která obsahuje metodu „Main“ tohoto C# programu.



Uvnitř metody „Main“ se vytvoří seznam s názvem „L“. Tento seznam obsahuje tři prvky řetězce, které představují názvy různých parfémů dle výběru uživatele. Metoda ToDictionary je volána v seznamu „L“. Převádí seznam do slovníku. Každý prvek řetězce v seznamu slouží jako klíč i hodnota ve výsledném slovníku.





Slovník je vytvořen s porovnáním klíčů bez ohledu na velikost písmen pomocí parametru StringComparer.OrdinalIgnoreCase, který se primárně používá k určení porovnání bez ohledu na velikost písmen při kontrole existence klíčů. Příkaz „if“ kontroluje, zda slovník obsahuje klíč „bombshell“, přičemž ignoruje velikost písmen. Pokud je klíč nalezen, bude zpracován fragment kódu v sekci „if“. Uvnitř bloku „if“ se provede příkaz Console.WriteLine („Bombshell exists“), který vypíše zprávu „Bombshell exists“ do konzole.

pomocí System ;

pomocí System. Sbírky . Obecný ;

pomocí System. Linq ;

třída Dummy

{

statický prázdnota Hlavní ( )

{

Seznam < tětiva > L = nový Seznam < tětiva > ( ) { 'BlackOpium' , 'Bomba' , 'GucciFlora' } ;

byl parfém = L. ToDictionary ( X => X , X => skutečný , StringComparer. OrdinalIgnoreCase ) ;

-li ( Parfém. ContainsKey ( 'bomba' ) )

{

Řídicí panel. WriteLine ( 'Bomba existuje' ) ;

}

}

}

Vzhledem k tomu, že slovník je vytvořen s porovnáním bez ohledu na malá a velká písmena, klíč „bombshell“ odpovídá skutečnému klíči „Bombshell“ ve slovníku. V důsledku toho se na konzole vytiskne zpráva „Bomba existuje“, jak je zobrazeno na následujícím připojeném výstupním obrázku:



Příklad 2:

V předchozím příkladu kódu jsme si ukázali, jak lze jednoduchou kolekci převést na slovník pomocí funkce ToDictionary. Nyní se přesuneme k trochu pokročilému příkladu kódu C# pro demonstraci použití funkce C# ToDictionary. Pojďme si kód rozebrat řádek po řádku.

Tento ilustrační fragment kódu začíná uvedením stejných povinných jmenných prostorů: System, System.Collections.Generic a System.Linq. Tyto jmenné prostory poskytují požadované třídy a metody rozšíření pro práci s kolekcemi a LINQ pro tento příklad kódu. Je definována třída „Dummy“, která je vstupním bodem.

Uvnitř metody „Main“ jazyka C# se vytvoří seznam s názvem „L“. Tento seznam obsahuje tři objekty třídy „Data“, které představují různé kosmetické produkty s jejich cenami a značkami. Každý datový objekt je inicializován pomocí syntaxe inicializátoru objektu. Vlastnosti „Cena“ a „Značka“ každého objektu jsou nastaveny na konkrétní hodnoty.

Zde přichází na řadu metoda ToDictionary. Zde se nazývá na seznamu „L“. Převádí seznam do slovníku, kde je jako klíč použita vlastnost „Price“ a jako hodnota vlastnost „Brand“. Výsledný slovník je přiřazen k proměnné „Dic“, jak je uvedeno v následujícím poskytnutém fragmentu kódu. Pro vyvolání párů klíč-hodnota ve slovníku „Dic“ je odhozena smyčka „foreach“.

Uvnitř smyčky jsou klíče a hodnota každého páru přístupné pomocí vlastností „Key“ a „Value“ struktury KeyValuePair. Příkaz funkce Console.WriteLine vytiskne každý pár klíč–hodnota do konzoly. Výstup je formátován pomocí řetězcové interpolace, aby se cena a informace o značce zobrazovaly samostatně.

Zde je třída „Data“ definována se dvěma vlastnostmi: „Price“ (celé číslo, které představuje cenu kosmetického produktu) a „Brand“ (řetězec, který představuje název značky produktu).

pomocí System ;

pomocí System. Sbírky . Obecný ;

pomocí System. Linq ;

třída Dummy

{

statický prázdnota Hlavní ( )

{

Seznam < Data > L = nový Seznam < Data > ( )

{

nové údaje { Cena = 13 000 , Značka = 'Huda Beauty' } ,

nové údaje { Cena = 15 000 , Značka = 'Charlotte Telburry' } ,

nové údaje { Cena = 11 000 , Značka = 'Nars' }

} ;

Slovník < int , tětiva > prosinec = L. ToDictionary ( p => p. Cena , p => p. Značka ) ;

pro každého ( var v v Dic )

{

Řídicí panel. WriteLine ( $ 'Cena: {v.Key}, Značka: {v.Value}' ) ;

}

}

}

třída Data

{

veřejnost int Cena { dostat ; soubor ; }

veřejný řetězec Značka { dostat ; soubor ; }

}

Když je kód spuštěn, vytvoří seznam datových objektů, převede seznam na slovník pomocí metody ToDictionary a poté zobrazí páry klíč-hodnota slovníku pomocí smyčky „foreach“.

Výstup pro tento příklad kódu je uveden v následujícím textu. Zobrazuje ceny a značky kosmetických produktů, které jsou uloženy ve slovníku na základě specifických vlastností, a poskytuje pohodlný způsob organizace a přístupu k datům v párech klíč-hodnota. Výstup předchozího kódu zobrazuje tři záznamy pro slovník:

Závěr

Tento průvodce C# demonstroval použití metody C# ToDictionary prostřednictvím některých základních a přesných ilustrací kódu. Tím, že metoda ToDictionary nabízí jasný a expresivní mechanismus pro popis párů klíč-hodnota, usnadňuje přeměnu kolekce na slovník. Je to silný nástroj C# pro manipulaci a transformaci dat.