J'ai une liste de MyObject1
:Comment remplir une arborescence?
public class MyObject1
{
public int Id {get; set;}
public int ParentId {get; set;}
}
List<MyObject1> list = new List<MyObject1>();
Je dois construire un arbre à l'aide 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>();
}
Quelle est la façon la plus rapide de le faire? Peut-être que je devrais trier mon list
par Id
ou ParentId
avant de construire?
ETA Mon essai:
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));
}
Le problème est que s'il n'y a pas un objet avec un tel .Id
dans l'arbre encore? C'est le meilleur moyen d'y arriver?
Vous préférerez probablement trier par parentID & Id dans ces compartiments. – Chris
Pourquoi recherchez-vous la méthode la plus rapide? votre chemin n'est pas assez rapide? Qu'avez-vous essayé? – I4V
@ I4V Pourquoi devrais-je chercher le moyen le plus lent de le faire? Je suis un nouveau dans C#, c'est pourquoi je le demande –