Метод C# ToDictionary

Metod C Todictionary



Функцията ToDictionary в C# е функция за разширение на LINQ, която ви позволява да трансформирате колекция от данни в речник, който предлага ясен и практичен начин за картографиране на обектите към различни ключове и свързани стойности. Изисква два аргумента, два делегата или ламбда израза, един за избор на ключ и допълнителен за избор на стойност за всеки обект в колекцията. В тази статия ще използваме някои примери на C# код, за да демонстрираме употребата на функцията ToDictionary.

Синтаксис:

Нека разбием и разберем всеки компонент, който е предоставен в рамките на следния синтаксис на функцията C# ToDictionary един по един:



беше дикт = колекция. ToDictionary ( keySelector , elementSelector ) ;
  • Ключовата дума „var“ е премахната тук, за да дефинира типовата категория на резултантния речник „dict“. В повечето случаи това е Dictionary, където K е типът на ключа, а V е категорията на типа на стойността на речника.
  • Елементът „collection“ представлява изходната колекция, която искате да конвертирате в „dict“ речник. Това може да бъде всеки клас, който имплементира интерфейса IEnumerable като списък, масив или резултат от заявка.
  • Ключовата дума „keySelector“ е делегат или ламбда израз, който указва как да се извлече ключът от всеки елемент в колекцията. Той получава елемент от колекцията като аргумент и връща стойността на ключа за този елемент. Ключът трябва да бъде уникален за всеки елемент в колекцията, тъй като речниците не могат да имат дублиращи се ключове.
  • Ключовата дума „elementSelector“ се отнася до делегат или ламбда израз, който указва как да се извлече стойността от всеки елемент в колекцията. Той също така получава елемент от колекцията като аргумент и дава стойността за този елемент.

След като изпълните функцията ToDictionary, ще имате нов речников обект, където всеки елемент от колекцията е представен като двойка ключ-стойност.







Пример 1:

Нека да започнем отначало това ръководство, като демонстрираме използването на функцията ToDictionary в C# с помощта на примерен код. Нека преминем през това стъпка по стъпка.



Кодът започва с импортирането на необходимите пространства от имена: System, System.Collections.Generic и System.Linq. Тези пространства от имена предоставят необходимите класове и методи за разширение за работа с колекции и LINQ. Дефиниран е класът „Dummy“, който съдържа метода „Main“ на тази C# програма.



Вътре в метода „Main“ се създава списък с име „L“. Този списък съдържа три низови елемента, които представляват имената на различни парфюми по избор на потребителя. Методът ToDictionary се извиква от списъка „L“. Той преобразува списъка в речник. Всеки низов елемент в списъка служи и като ключ, и като стойност в резултантния речник.





Речникът е създаден с нечувствително към регистър сравнение на ключове с помощта на параметъра StringComparer.OrdinalIgnoreCase, който се използва основно за указване на нечувствително към регистър сравнение при проверка за съществуване на ключове. Изявление „if“ проверява дали речникът съдържа ключа „бомба“, като същевременно игнорира неговия регистър. Ако ключът бъде намерен, кодовият фрагмент в секцията „if“ ще бъде обработен. Вътре в блока “if” се изпълнява операторът Console.WriteLine(“Bombshell exists”), който отпечатва съобщението “Bombshell съществува” на конзолата.

използвайки System ;

използвайки System. Колекции . Generic ;

използвайки System. Linq ;

клас Dummy

{

статичен невалиден Основен ( )

{

списък < низ > Л = нов списък < низ > ( ) { 'черен опиум' , 'Бомба' , 'GucciFlora' } ;

беше парфюмът = Л. ToDictionary ( х => х , х => вярно , StringComparer. OrdinalIgnoreCase ) ;

ако ( Парфюм. Съдържа ключ ( 'бомба' ) )

{

Конзола. WriteLine ( „Бомбата съществува“ ) ;

}

}

}

Тъй като речникът е създаден с нечувствително към малки и главни букви сравнение, ключът „бомба“ съвпада с действителния ключ „бомба“ в речника. В резултат на това съобщението „Bombshell съществува“ се отпечатва на конзолата, както е показано в следното прикачено изходно изображение:



Пример 2:

В предишния пример с код демонстрирахме как проста колекция може да бъде преобразувана в речник чрез функцията ToDictionary. Сега ще преминем към малко напреднал пример за код на C# за демонстрация на използването на функцията C# ToDictionary. Нека разбием кода ред по ред.

Този кодов фрагмент за илюстрация започва с въвеждането на същите задължителни пространства от имена: System, System.Collections.Generic и System.Linq. Тези пространства от имена предоставят необходимите класове и методи за разширение за работа с колекции и LINQ за този примерен код. Дефиниран е класът „Dummy“, който е входна точка.

Вътре в метода „Main“ на езика C# се формира списък с име „L“. Този списък съдържа три обекта от класа „Данни“, който представя различните козметични продукти с техните цени и марки. Всеки обект с данни се инициализира с помощта на синтаксиса на инициализатор на обект. Свойствата „Цена“ и „Марка“ на всеки обект се задават със специфични стойности.

Тук идва методът ToDictionary. Нарича се тук в списъка „L“. Той преобразува списъка в речник, където свойството „Цена“ се използва като ключ, а свойството „Марка“ се използва като стойност. Полученият речник се присвоява на променливата „Dic“, както е споменато в следния предоставен кодов фрагмент. Цикълът „foreach“ е отхвърлен, за да извика двойките ключ-стойност в речника „Dic“.

Вътре в цикъла ключът и стойността на всяка двойка са достъпни чрез свойствата „Ключ“ и „Стойност“ на структурата KeyValuePair. Функционалният оператор Console.WriteLine отпечатва всяка двойка ключ-стойност на конзолата. Резултатът се форматира с помощта на интерполация на низове, за да се покаже отделно цената и информацията за марката.

Тук класът „Данни“ се дефинира с две свойства: „Цена“ (цяло число, което представлява цената на козметичен продукт) и „Марка“ (низ, който представлява името на марката на продукт).

използвайки System ;

използвайки System. Колекции . Generic ;

използвайки System. Linq ;

клас Dummy

{

статичен невалиден Основен ( )

{

списък < Данни > Л = нов списък < Данни > ( )

{

нови данни { Цена = 13000 , Марка = 'Худа красота' } ,

нови данни { Цена = 15 000 , Марка = 'Шарлот Телбъри' } ,

нови данни { Цена = 11000 , Марка = 'Нарс' }

} ;

Речник < вътр , низ > дек = Л. ToDictionary ( стр => стр. Цена , стр => стр. Марка ) ;

за всеки ( var v в Dic )

{

Конзола. WriteLine ( $ „Цена: {v.Key}, марка: {v.Value}“ ) ;

}

}

}

клас Данни

{

публичен вътр Цена { получавам ; комплект ; }

обществен низ Марка { получавам ; комплект ; }

}

Когато кодът се изпълни, той създава списък с обекти с данни, преобразува списъка в речник с помощта на метода ToDictionary и след това показва двойките ключ-стойност на речника с помощта на цикъла „foreach“.

Резултатът за този примерен код е даден по-долу. Той показва цените и марките на козметични продукти, които се съхраняват в речника въз основа на конкретни свойства, предоставяйки удобен начин за организиране и достъп до данните в двойки ключ-стойност. Резултатът от предишния код показва три записа за речника:

Заключение

Това ръководство за C# демонстрира използването на метода C# ToDictionary чрез някои основни и точни илюстрации на код. Като предлага ясен и изразителен механизъм за описание на двойките ключ-стойност, методът ToDictionary улеснява превръщането на колекция в речник. Това е силна C# помощна програма за манипулиране и трансформиране на данните.