(ID / ParentID) список в иерархический список
MyClass
состоит изID
ParentID
а такжеList<MyClass>
какChildren
У меня есть списокMyClass
нравится
ID ParentID
1 0
2 7
3 1
4 5
5 1
6 2
7 1
8 6
9 0
10 9
Выход (иерархический список) какList<MyClass>
1 __ 3
|__ 5__ 4
|__ 7__ 2__ 6__ 8
|__ 11
9 __10
Какой самый простой способ добиться этого в linq?
P.S .:ParentID
не отсортировано
Редактировать:
Моя попытка:
class MyClass
{
public int ID;
public int ParentID;
public List<MyClass> Children = new List<MyClass>();
public MyClass(int id, int parent_id)
{
ID = id;
ParentID = parent_id;
}
}
инициализировать пример данных и попытаться получить иерархические данные
List<MyClass> items = new List<MyClass>()
{
new MyClass(1, 0),
new MyClass(2, 7),
new MyClass(3, 1),
new MyClass(4, 5),
new MyClass(5, 1),
new MyClass(6, 2),
new MyClass(7,1),
new MyClass(8, 6),
new MyClass(9, 0),
new MyClass(10, 9),
new MyClass(11, 7),
};
Dictionary<int, MyClass> dic = items.ToDictionary(ee => ee.ID);
foreach (var c in items)
if (dic.ContainsKey(c.ParentID))
dic[c.ParentID].Children.Add(c);
как видите, много слов, которые я не хочу, все еще в словаре