Как найти общее количество дочерних элементов и количество дочерних уровней в родительском иерархическом списке в С#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Как найти общее количество дочерних элементов и количество дочерних уровней в родительском иерархическом списке в С#

Сообщение Гость »

В моем проекте есть древовидное меню.

Данные выглядят следующим образом

{ParentId = null, Id = 10, Name "a"},
{ParentId = null, Id = 33, Name "aa"},
{ParentId = 10 , Id = 11, Name "aaa"},
{ParentId = 10, Id = 12, Name "aaaa"},
{ParentId = 11, Id = 13, Name "aaaaa"},
{ParentId = 56 ,Id = 14, Name "aas"},
{ParentId = 78 , Id = 15, Name "adss"},
{ParentId = 99 , Id = 16, Name "ader"}


Я создал иерархический список для хранения данных

public class NavBarItem
{
public int? Id { get; set; }
public int? ParentId { get; set; }
public string Name{get;set;}
public IEnumerable Children { get; set; }
public int ChildCount { get; set; }
public int HierarchyLevel { get; set; }
}


И мой рекурсивный метод получит данные из таблицы и привяжет их к иерархическому списку

Что я такое Здесь мы пытаемся получить общее количество детей/внуков для каждого родителя.

Например, у родителя A есть дочерний элемент B, а у ребенка B есть дочерние элементы C и D, тогда общее количество ChildCount для A должно быть 3, B должно быть 2, а C должно быть 0

Кроме того, я хотел получить уровень иерархии для каждого родителя.

В приведенном выше примере: у родителя A есть дочерний элемент B, а у B есть другой дочерний элемент. Таким образом, для родителя A уровень иерархии равен 2, для B он должен быть 1, а для C он должен быть 0.

Пример, если я беру элемент с Id = 10, он имеет иерархию два (количество дочерних уровней)

{ParentId = 10 , Id = 11, Name "aaa"},
{ParentId = 11, Id = 13, Name "aaaaa"},


Есть ли лучший или простой способ получить этот ChildCount, а также уровень иерархии.

Пример общего количества детей:

Input is Id = 10

total childs = 3.


Текущий подход:

RecursiveMethod(List)
{
for each through the list and find the count
call the RecursiveMethod again
}


Подробнее здесь: https://stackoverflow.com/questions/618 ... der-a-hier
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»