如何在C#中将List转换为Hashtable?

时间:2020-03-06 15:04:01  来源:igfitidea点击:

我有一个对象列表,每个对象包含一个ID,代码和描述。

我需要将此列表转换为Hashtable,使用Description作为键,并将Id作为值。

这样就可以将Hashtable序列化为JSON。

有没有一种方法可以将List <Object>转换为Hashtable,而无需编写循环遍历列表中的每个项目的方法?

解决方案

如果可以访问Linq,则可以使用ToDictionary函数。

假设列表包含类型为Foo的对象(带有int Id和字符串Description)。

我们可以使用Linq将该列表转换为Dictionary,如下所示:

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

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

还要查看System.Collections.ObjectModel.KeyedCollection <TKey,TItem>。似乎是我们想要做的更好的选择。