MyClass
składa ID
ParentID
i List<MyClass>
jak Children
(ID/ParentID) wykaz do hierarchiczną listę
Mam listę MyClass
jak ten
ID ParentID
1 0
2 7
3 1
4 5
5 1
6 2
7 1
8 6
9 0
10 9
wyjściowego (lista hierarchiczna) jako List<MyClass>
1 __ 3
|__ 5__ 4
|__ 7__ 2__ 6__ 8
|__ 11
9 __10
Jaki jest najprostszy sposób osiągnięcia tego w linq?
PS: ParentID
nie klasyfikowane
Edit:
My try:
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;
}
}
zainicjować przykładowe dane i starają się dotrzeć do danych hierarchicznych
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);
jak widać, wiele pozycje Nie chcę jeszcze w słowniku
Jaki rodzaj struktury danych powinny być wyjście? – Jon
@ Jon: Proszę odnieść się do mojego zaktualizowanego pytania –
Ale "Lista" nie jest hierarchiczną strukturą danych. Mówiąc inaczej, w jaki sposób proponujecie zamienić 'List' na zobrazowane drzewo? – Jon