Encuentre todos los descendientes en el árbol jerárquico de autorreferencia (padre-hijo)
Esto es similar a la pregunta (Encontrar padres en una jerarquía de árbol para un niño determinado LINQ (expresión lambda)) Sin embargo, en lugar de encontrar a todos los antepasados, necesito encontrar a todos los descendientes.
Estoy modificando el método de Yacoub, pero solo logré obtener todos los descendientes en una rama.
private IEnumerable<UserRole> FindAllChildrenRecursively(List<UserRole> allRoles, UserRole role)
{
var child = allRoles.FirstOrDefault(x => x.ParentId == role.Id);
if (child == null)
return Enumerable.Empty<UserRole>();
return new[] { child }.Concat(FindAllChildrenRecursively(allRoles, child));
}