Найти всех потомков в иерархическом дереве с самообращением (родитель-потомок)
Это похоже на вопрос (Поиск родителей в древовидной иерархии для данного дочернего элемента LINQ (лямбда-выражение)). Однако вместо того, чтобы найти всех предков, мне нужно найти всех потомков.
Я модифицирую метод Якуба, но мне удалось собрать всех потомков в одну ветку.
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));
}