【问题标题】:Getting all objects from all IEnumerables within all IEnumerables从所有 IEnumerables 中的所有 IEnumerables 中获取所有对象
【发布时间】:2013-11-23 00:35:37
【问题描述】:

在我们的一个客户的项目中,我经常需要在IEnumerable 中获取所有项目的所有子项。

这是模型的简化版本:

public class Parent
{
    public IEnumerable<Child> Children {get;set;}
}

public class Child
{
}

当我现在想要List{T} 中所有Parent 实例的所有 个子对象时,我现在使用常规foreach,如下所示:

List<Parent> parents = GetAllParents();
var children = new List<Child>();
foreach(var parent in parents)
{
    children.AddRange(parent.Children);
}

我想知道这是否可以在一个 Linq 语句中完成?

类似:

var children = parents.Select(....

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    使用SelectMany 将父母序列投影到子列表中,并将这些列表展平为单个序列:

    var children = parents.SelectMany(p => p.Children);
    

    查询语法看起来像

    var children = from p in parents
                   from c in p.Children
                   select c;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多