В моем проекте есть древовидное меню.
Данные выглядят следующим образом
{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
Как найти общее количество дочерних элементов и количество дочерних уровней в родительском иерархическом списке в С# ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение