Como selecionar entidades aninhadas recursivas usando LINQ to Entity
Eu tenho uma entidade chamada Category e a entidade contém um IEnumerable chamado ChildCategories. Uma categoria pode ter essas categorias filho, que podem ter suas próprias categorias filho e assim por diante.
Digo que eu selecionei a categoria pai de nível superior, quero obter todas as categorias filho e suas categorias filho e assim por diante, para que eu tenha todos os filhos hierárquicos da categoria. Eu quero isso lisonjeado e retornou com a categoria inicial. Eu tentei criar algo como
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);
}
}
}
}
Que ficaria lisonjeado depois de usar o método SelectMany, mas ainda não o consegui