【发布时间】:2011-03-24 16:59:03
【问题描述】:
我有一个名为 Category 的实体,该实体包含一个名为 ChildCategories 的 IEnumerable。一个类别可以有这些子类别,这些子类别可以有它自己的子类别等等。
假设我已经选择了顶级父类别,我想获取所有子类别及其子类别等等,以便我拥有该类别的所有层次子类别。我想要这个扁平化并返回初始类别。我尝试过创建类似的东西
public static IEnumerable<T> AllChildren<T>(this IEnumerable<T> items,
Func<T, IEnumerable<T>> children, bool includeSelf)
{
foreach (var item in items)
{
if (includeSelf)
{
yield return item;
}
if (children != null)
{
foreach (var a in children(item))
{
yield return a;
children(a).AllChildren(children, false);
}
}
}
}
在使用 SelectMany 方法后会变得平淡,但还没有完全理解。
【问题讨论】:
标签: .net linq-to-entities