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

questionAnswers(3)

yourAnswerToTheQuestion