(ID / ParentID) liste à Liste hiérarchique

MyClass se compose de ID ParentID et List<MyClass> comme Children

J'ai la liste de MyClass comme ce

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

De sortie (liste Hiérarchique) List<MyClass>

1 __ 3
 |__ 5__ 4
 |__ 7__ 2__ 6__ 8
     |__ 11

9 __10

Quelle est la façon la plus simple pour atteindre cet objectif dans linq?
P. S.: ParentID pas triés

Edit:
Ma essayer:

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

initialiser les données de l'échantillon et d'essayer d'atteindre des données hiérarchiques

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

comme vous pouvez le voir, beaucoup d'éléments que je ne veux pas encore dans le dictionnaire

source d'informationauteur Rami Shareef