【问题标题】:Simple and Best way to convert Dictionary<key, List<obj>> to List<obj> in C#在 C# 中将 Dictionary<key, List<obj>> 转换为 List<obj> 的简单和最佳方法
【发布时间】:2017-05-11 21:11:10
【问题描述】:

假设我们有一本这样的字典

Dictionary<key, List<obj>>

我想像这样将所有值作为列表获取

List<obj>

例如字典中有3个键,key1、key2、key3。

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

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

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

【问题讨论】:

    标签: c# dictionary


    【解决方案1】:

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

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

    【讨论】:

    • 对于downvoter:这个答案只比(x =&gt; x.Value)选项长1个字符。但它不会创建我们在这里不需要的KeyValuePair 对象。它还可以更快地缩小上下文范围,从而使意图更加清晰。
    【解决方案2】:

    使用 LINQ SelectMany 方法:

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

    来自文档:

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 2018-08-27
      • 2010-11-28
      相关资源
      最近更新 更多