【问题标题】:Concat lists from dictionary-values to IEnumerable从字典值到 IEnumerable 的连接列表
【发布时间】:2020-03-02 12:06:18
【问题描述】:

我有一个Dictionary<int, list<T>> 并想获得一个IEnumerable<T>,它允许我遍历字典中所有列表的所有元素。这当然应该避免处理所有元素和其他性能成本高昂的操作。

我使用 Linq 的方法,不太正确:

IEnumerable<T> enumerable = dict.SelectMany(list).Foreach(list.ConcatAll()).ToEnum();

如果Linq 不是最佳方式,请建议其他选项。

【问题讨论】:

    标签: c# .net linq dictionary


    【解决方案1】:

    尝试使用以下代码

    var enumerable = dict.Values.SelectMany(v => v);
    

    您正在访问字典的Values 集合,然后使用SelectMany 方法将每个值投影为List&lt;T&gt; 并展平为生成的枚举

    您的代码不起作用,因为SelectMany() 接受Func 作为集合选择器,也不需要使用Foreach 方法。 ToEnum() 方法的使用在这里也无效,它属于Enum 类型并且几乎所有System.Linq 方法都已经接受或返回IEnumerable&lt;T&gt;

    【讨论】:

    • 击败我 +1 以获得更好的解释
    • 当我迭代这个生成的枚举时,它会迭代列表还是列表的元素?
    • @Mechandrius 它应该迭代元素
    • @Mechandrius 它将迭代列表的元素。 SelectMany 将每个列表中的元素投射到一个结果枚举中
    • 好的,这是正确的答案。不好意思问了这么简单的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    相关资源
    最近更新 更多