我有一个分层对象结构:
Parent
List(of Child)
Child
List (of SubChild)
是否可以使用LINQ(最好使用Lambda)从Parent获取每个SubChild(作为新列表)?
传统上它会在循环中完成:
Foreach(Child in Parent)
.. Foreach(SubChild in Child)
.... Add SubChild to FullSubChildList
答案 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(...)