¿Cómo selecciono entidades anidadas recursivas usando LINQ to Entity

Tengo una entidad llamada Categoría y la entidad contiene un IEnumerable llamado ChildCategories. Una categoría puede tener estas categorías secundarias que pueden tener sus propias categorías secundarias, etc.

Digo que he seleccionado la categoría principal de nivel superior, quiero obtener todas las categorías secundarias y sus categorías secundarias, y así sucesivamente para tener todos los elementos secundarios jerárquicos de la categoría. Quiero esto adulado y devuelto con la categoría inicial. He intentado crear 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 se sentiría halagado después de usar el método SelectMany, pero aún no lo tengo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta