MyClass
consta de ID
ParentID
y List<MyClass>
como Children
(ParentID ID /) lista a la lista jerárquica
tengo lista de MyClass
como este
ID ParentID
1 0
2 7
3 1
4 5
5 1
6 2
7 1
8 6
9 0
10 9
de salida (lista jerárquica) como List<MyClass>
1 __ 3
|__ 5__ 4
|__ 7__ 2__ 6__ 8
|__ 11
9 __10
¿Cuál es la forma más sencilla de lograr esto en linq?
PS: ParentID
no ordenadas
Editar:
Mi intento:
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;
}
}
inicializar datos de ejemplo y tratar de llegar a los datos jerárquicos
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);
como se puede ver, un montón de artículos que aún no quiero en el diccionario
¿Qué tipo de estructura de datos debe ser la salida en? – Jon
@Jon: Por favor, consulte mi pregunta actualizada –
Pero una 'Lista' no es una estructura de datos jerárquica. Para decirlo de otra manera, ¿cómo propones convertir una 'Lista' en el árbol ilustrado? – Jon