Как преобразовать List <object> в Hashtable в C#?

У меня есть список объектов, каждый из которых содержит идентификатор, код и описание.

Мне нужно преобразовать этот список в хеш-таблицу, используя Описание в качестве ключа и Идентификатор в качестве значения.

Это сделано для того, чтобы затем Hashtable можно было сериализовать в JSON.

Есть ли способ преобразовать из List <Object> в Hashtable без написания цикла для просмотра каждого элемента в списке?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
18
0
19 936
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Если у вас есть доступ к Linq, вы можете использовать функцию ToDictionary.

Потрясающий! Это именно то, что я искал. Спасибо :)

Sam Wessel 03.10.2008 14:17
Ответ принят как подходящий

Предположим, что ваш список содержит объекты типа Foo (с идентификатором int и строковым описанием).

Вы можете использовать Linq, чтобы превратить этот список в словарь следующим образом:

var dict = myList.Cast<Foo>().ToDictionary(o => o.Description, o => o.Id);

Этот пример верен. Linq продолжает решать проблемы слева, справа и по центру.

Paul Shannon 03.10.2008 14:23

Отличный материал! Это почти идентично тому, что я только что написал, используя примеры из ссылки Фрэнка. Спасибо большое за вашу помощь :)

Sam Wessel 03.10.2008 14:26

theList.ForEach(delegate(theObject obj) { dic.Add(obj.Id, obj.Description); });

Параллельная версия очень опасна; вы предполагаете, что словарь будет потокобезопасным, что задокументировано как нет. Теперь, если бы существовала версия ToDictionary в формате PFX, это могло бы быть иначе, но .Add (...) - рискованно ;-p

Marc Gravell 03.10.2008 16:19

Какая правда! :) Я удалил эту реализацию из своей записи.

noocyte 15.10.2008 16:49

Очень хороший ответ. Это отзыв. diditwith.net/2006/10/05/PerformanceOfForeachVsListForEach.a‌ spx

user366312 18.10.2009 22:47

JMSA: Круто, всегда интересно видеть такие числа. Не сильно повлияет на производительность приложения, но все равно круто :)

noocyte 19.10.2009 14:44

Также посмотрите на System.Collections.ObjectModel.KeyedCollection<TKey, TItem>. Кажется, он лучше подходит для того, чем вы хотите заниматься.

Другие вопросы по теме