【问题标题】:How to use LINQ to get a single IENumerable<X> from a property of an IEnumerable<T>?如何使用 LINQ 从 IEnumerable<T> 的属性中获取单个 IENumerable<X>?
【发布时间】:2012-11-29 04:23:13
【问题描述】:

考虑以下数组:

class B { }

class A 
{
    IEnumerable<B> C { get; }
}

IEnumerable<A> array;

我最终需要一个IEnumerable&lt;B&gt;。我最终得到IEnumerable&lt;IEnumerable&lt;B&gt;&gt;

var q = array.Select(a =&gt; a.C);

如何展开数组?

【问题讨论】:

  • 您没有向我们展示您用于获取IEnumerable&lt;IEnumerable&lt;B&gt;&gt; 的代码。根本不清楚你在问什么。
  • 放松是什么意思?你的意思是把二维数组转换成一维数组吗?
  • @RyanGates,我重新表述了这个问题

标签: c# .net linq


【解决方案1】:

使用SelectMany:

var q = array.SelectMany(a => a.C);

这将为您提供一个IEnumerable&lt;B&gt;,其中包含array 中每个项目的C 属性的扁平内容。

【讨论】:

    【解决方案2】:

    你只需要使用SelectMany:

    IEnumerable<B> allBs = array.SelectMany(a => a.C);
    

    【讨论】:

    • 最佳水晶球分析。
    • @RobertHarvey 不是真的,我只是知道original question OP 以一种没有真正概括的方式概括了这一点,然后编辑他的问题以去概括它,然后让他的编辑回滚因为人们已经回答了原文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多