У меня есть список MyObject1
:Как заполнить древовидную структуру?
public class MyObject1
{
public int Id {get; set;}
public int ParentId {get; set;}
}
List<MyObject1> list = new List<MyObject1>();
Мне нужно построить дерево с помощью MyObject2
:
public class MyObject2
{
public int Id {get; set;}
public int ParentId {get; set;}
// Here should be all child objects, that have .ParentId property is
// equal to .Id property of current node
public List<MyObject2> Children = new List<MyObject2>();
}
Какой самый быстрый способ сделать это? Может быть, мне нужно отсортировать мой list
на Id
или ParentId
перед зданием?
ETA Моя попытка:
MyObject2 root = MyObject2(1, 0); // in constructor id, parentId
foreach (MyObject1 obj1 in list)
{
// Traversing all tree within root (let's say myTree),
//if myTree.ParentId = obj1.Id then:
myTree.Children.Add(new MyObject2(obj1.Id, obj1.ParentId));
}
Проблема не то, что, если нет никакого любой объект в дереве такой .Id
еще? Это лучший способ?
Возможно, вам будет лучше сортировать по parentID, а затем Id в этих ковших – Chris
Почему вы ищете «самый быстрый способ»? ваш путь не достаточно быстрый? Что вы пробовали? – I4V
@ I4V Почему я должен искать самый медленный способ сделать это? Я новичок в C#, поэтому я прошу об этом –