转换字典<key,list <obj =“”>&gt;的简单和最佳方法在C#中列出<obj>

时间:2017-05-11 21:11:10

标签: c# dictionary

假设我们有一个像这样的词典

Dictionary<key, List<obj>>

我希望将所有值都列为此列表

List<obj>

e.g。字典中有3个键,key1,key2,key3。

2 values for key1
3 values for key2
5 values for key3

结果应该是一个包含10个值的列表!

我认为可以使用foreach和ToList()来完成。 我希望更简单,更有效的解决方案。

2 个答案:

答案 0 :(得分:3)

您可以使用Values属性从字典中获取所有值。并SelectMany linq扩展将列表序列展平为对象序列:

dictionary.Values.SelectMany(v => v).ToList()

答案 1 :(得分:2)

使用LINQ SelectMany方法:

var list = dictionary.SelectMany(item => item.Value).ToList();

来自文档:

  

将序列的每个元素投影到IEnumerable并展平   得到的序列成一个序列。

您所要做的就是指定选择器 - 您要为每个KeyValuePair选择的IEnumerable,这显然是值。