У меня есть список объектов, каждый из которых содержит идентификатор, код и описание.
Мне нужно преобразовать этот список в хеш-таблицу, используя Описание в качестве ключа и Идентификатор в качестве значения.
Это сделано для того, чтобы затем Hashtable можно было сериализовать в JSON.
Есть ли способ преобразовать из List <Object> в Hashtable без написания цикла для просмотра каждого элемента в списке?





Если у вас есть доступ к Linq, вы можете использовать функцию ToDictionary.
Предположим, что ваш список содержит объекты типа Foo (с идентификатором int и строковым описанием).
Вы можете использовать Linq, чтобы превратить этот список в словарь следующим образом:
var dict = myList.Cast<Foo>().ToDictionary(o => o.Description, o => o.Id);
Этот пример верен. Linq продолжает решать проблемы слева, справа и по центру.
Отличный материал! Это почти идентично тому, что я только что написал, используя примеры из ссылки Фрэнка. Спасибо большое за вашу помощь :)
theList.ForEach(delegate(theObject obj) { dic.Add(obj.Id, obj.Description); });
Параллельная версия очень опасна; вы предполагаете, что словарь будет потокобезопасным, что задокументировано как нет. Теперь, если бы существовала версия ToDictionary в формате PFX, это могло бы быть иначе, но .Add (...) - рискованно ;-p
Какая правда! :) Я удалил эту реализацию из своей записи.
Очень хороший ответ. Это отзыв. diditwith.net/2006/10/05/PerformanceOfForeachVsListForEach.a spx
JMSA: Круто, всегда интересно видеть такие числа. Не сильно повлияет на производительность приложения, но все равно круто :)
Также посмотрите на System.Collections.ObjectModel.KeyedCollection<TKey, TItem>. Кажется, он лучше подходит для того, чем вы хотите заниматься.
Потрясающий! Это именно то, что я искал. Спасибо :)