【问题标题】:Simpliest way to transform a Dictionary<int, Dictionary<int, Foo> > to IEnumerable<IEnumerable<Foo> > in Linq?在 Linq 中将 Dictionary<int, Dictionary<int, Foo> > 转换为 IEnumerable<IEnumerable<Foo> > 的最简单方法?
【发布时间】:2012-03-26 12:03:17
【问题描述】:

我在一侧有一个对象Dictionary&lt;int, Dictionary&lt;int, Foo&gt; &gt;,另一侧有一个函数采用IEnumerable&lt;IEnumerable&lt;Foo&gt; &gt;

在 Linq 中从一个转换到另一个的最简单方法是什么,我想不出什么好东西,我所有的尝试都以 foreach 循环结束......

【问题讨论】:

    标签: c# .net linq dictionary ienumerable


    【解决方案1】:

    应该这样做:

    return dictionary.Values.Select(nested => nested.Values);
    

    【讨论】:

    • @KirillPolishchuk 确保文件顶部有using System.Linq;
    • @KirillPolishchuk:谢谢,已修复 - 现在更简单了 :)
    • @w0lf:不,以前不正确——我试图走得太远。更简单的版本虽然有效。
    【解决方案2】:

    结果来自

       var list = dict.Values.Select(kv => kv.Values);
    

    可分配给IEnumerable&lt;IEnumerable&lt;Foo&gt; &gt; 类型的参数。

    【讨论】:

      【解决方案3】:

      用途:

      var result = dict.Select(d => d.Value.Select(i => i.Value));
      

      【讨论】:

        【解决方案4】:

        类似这样的:

        var result= (
                from d in dic
                select
                    (
                        from values in d.Value
                        select values.Value
                    )
            );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-22
          • 1970-01-01
          • 2014-11-08
          • 1970-01-01
          相关资源
          最近更新 更多