Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何转换列表<;对象>;要在C#中创建哈希表?_C#_List_Hashtable - Fatal编程技术网

如何转换列表<;对象>;要在C#中创建哈希表?

如何转换列表<;对象>;要在C#中创建哈希表?,c#,list,hashtable,C#,List,Hashtable,我有一个对象列表,每个对象包含一个Id、代码和描述 我需要将此列表转换为哈希表,使用Description作为键,使用Id作为值 这样,哈希表就可以序列化为JSON 有没有一种方法可以从列表转换为哈希表,而无需编写循环来遍历列表中的每个项目?如果您可以访问Linq,则可以使用该函数。假设您的列表包含Foo类型的对象(具有int-Id和字符串描述) 您可以使用Linq将该列表转换为字典,如下所示: var dict = myList.Cast<Foo>().ToDictionary(o

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

我需要将此列表转换为哈希表,使用Description作为键,使用Id作为值

这样,哈希表就可以序列化为JSON


有没有一种方法可以从列表转换为哈希表,而无需编写循环来遍历列表中的每个项目?

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

假设您的列表包含Foo类型的对象(具有int-Id和字符串描述)

您可以使用Linq将该列表转换为字典,如下所示:

var dict = myList.Cast<Foo>().ToDictionary(o => o.Description, o => o.Id);
var dict=myList.Cast().ToDictionary(o=>o.Description,o=>o.Id);
列表ForEach(委托(对象对象){dic.Add(对象Id,对象描述);});

还可以查看
System.Collections.ObjectModel.KeyedCollection
。它似乎更适合你想做的事情。

太棒了!这正是我想要的。谢谢:)那个例子很贴切。林克一直在解决左、右、中的问题。很棒的东西!这与我刚才使用Frank链接中的示例编写的内容几乎相同。非常感谢您的帮助:)并行版本非常危险;您假设字典将是线程安全的,但它被记录为不安全。现在,如果有一个PFX版本的ToDictionary,那么这可能是不同的-但是.Add(…)-风险-(非常正确!)我已经从我的条目中删除了这个实现。回答得很好。这是一份证明。JMSA:很酷,看到这样的数字总是很有趣。不会对应用程序性能产生重大影响,但仍然很酷:)