MyClass
состоит из ID
ParentID
и List<MyClass>
, как Children
(ID ParentID /) список для иерархического списка
У меня есть список MyClass
как этот
ID ParentID
1 0
2 7
3 1
4 5
5 1
6 2
7 1
8 6
9 0
10 9
Output (иерархический список) в качестве List<MyClass>
1 __ 3
|__ 5__ 4
|__ 7__ 2__ 6__ 8
|__ 11
9 __10
Каков самый простой способ достичь этого в linq?
PS: ParentID
не сортируется
Edit:
Моя попытка:
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);
, как вы можете видеть, много предметы Я не хочу еще в словаре
Какой тип структуры данных вывод должен быть в? – Jon
@Jon: Пожалуйста, обратитесь к моему обновленному вопросу –
Но «Список» не является иерархической структурой данных. Иными словами, как вы предлагаете превратить «Список» в изображенное дерево? – Jon