(ID / ParentID) список в иерархическом списке

MyClass состоит из ID ParentID и Список как Потомки

У меня есть список of MyClass как это

ID  ParentID
1   0
2   7
3   1
4   5
5   1
6   2
7   1
8   6
9   0
10  9

Вывод (иерархический список) как Список

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);

, как видите, многие элементы, которые мне не нужны, все еще находятся в словаре

12
задан Rami Shareef 23 February 2012 в 08:29
поделиться