LINQ可以返回一组嵌套的对象吗?

时间:2014-07-11 10:49:51

标签: c# linq lambda

我有一个分层对象结构:

Parent
List(of Child)

Child
List (of SubChild)

是否可以使用LINQ(最好使用Lambda)从Parent获取每个SubChild(作为新列表)?

传统上它会在循环中完成:

Foreach(Child in Parent)
.. Foreach(SubChild in Child)
.... Add SubChild to FullSubChildList

2 个答案:

答案 0 :(得分:2)

使用Enumerable.SelectMany投影和展平层次结构:

var FullSubChildList = 
    Parent.SelectMany(p => p.ChildList).SelectMany(c => c.SubChildList).ToList();

如果Parent为IEnumerable<Child>且Child为IEnumerable<SubChild>(根据您的代码示例):

var FullSubChildList = Parent.SelectMany(p => p).SelectMany(c => c).ToList();

答案 1 :(得分:2)

您可以使用SelectMany执行此操作:

parent.SelectMany(p => p.Child.SelectMany(c => c.SubChild))
      .Select(...)