Выбрать все дочерние подразделения с помощью Linq

116
04 мая 2021, 14:00

Существует такая модель данных:

    public sealed partial class Department
    {
        public int Id { get; set; }
        public string NameDepartment { get; set; }
        public int ParentId { get; set; }
        public List<Worker> Workers => this.Dm.Worker.GetList().FindAll(x => x.DepartmentId == this.Id);
        public Department ParentDepartment => this.Dm.Department.GetItem(this.ParentId);
        public List<Department> ChildDepartments => 

Необходимо получить список дочерних подразделений (Связаны через ParentId) с помощью Linq. Я так понимаю здесь необходимо применить рекурсию и можно ли это сделать через свойство или придется создавать функцию? Буду благодарен за любую помощь.

Answer 1

Разобрался. Мне помог вот этот вопрос на англоязычном StackOverFlow https://stackoverflow.com/questions/41608665/linq-recursive-parent-child

А именно, добавил метод расширения для Enumerable, чтобы работать с рекурсией.

public static class EnumerableExtensions
{
    public static IEnumerable<T> SelectRecursive<T>(this IEnumerable<T> source, Func<T, IEnumerable<T>> selector)
    {
        foreach (var parent in source)
        {
            yield return parent;
            var children = selector(parent);
            foreach (var child in SelectRecursive(children, selector))
                yield return child;
        }
    }
}
READ ALSO
Вопрос насчёт MySQL для Node.JS

Вопрос насчёт MySQL для Node.JS

Я создаю ботов для Discord при помощи модуля discordjs для Node

92
PHP, отсортировать массив с timestamp

PHP, отсортировать массив с timestamp

Имеется массив с timestamp-ми примерно с прошлого года (когда добавлялись пользователи)Надумала сделать статистику, но не пойму как можно день...

120
Почему удаление в fieldset&#39;ах с конца?

Почему удаление в fieldset'ах с конца?

Есть база данных где есть 5 строк, каждая запись из бд идет на сайт в каждый фиелдсет, но когда нажимаю

110
Change Permalink

Change Permalink

проблема такова есть сайт , в нем категории , ссылка выглядит таким siteru/category-/category-b/category-c/postname, нужно чтобы она была вида site

89