Как выбрать рекурсивные вложенные объекты с помощью LINQ to Entity

У меня есть объект под названием Category, который содержит объект IEnumerable под названием ChildCategories. Категория может иметь эти дочерние категории, которые могут иметь свои собственные дочерние категории и т. Д.

Допустим, я выбрал родительскую категорию верхнего уровня, я хочу получить все дочерние категории и их дочерние категории и так далее, чтобы у меня было все иерархические дочерние элементы категории. Я хочу, чтобы это было польщено и вернулось с исходной категорией. Я пробовал создать что-то вроде

    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, но не совсем понял.

10
задан casperOne 24 March 2011 в 17:45
поделиться