Добавить дочерний узел в указанном c родительском узле в виде дерева - PullRequest
0 голосов
/ 17 февраля 2020
public class TreeViewDto
{
  public string Name {get; set;}
  public Guid RowGuid {get; set;}
  public List<TreeViewDto> ChildDtos {get; set;}
  public int NumberofChildern {get; set;} 
}

L = уровень C = дочерний элемент

Root
   -RowGuid
   -ChildDtos -- (L1C1)
              -RowGuid
              -ChildDtos -- (L2C1)
                           -RowGuid
                           -ChildDtos

                            (L2C2)
                           -RowGuid
                           -ChildDtos --
                                         (L3C1)
                                         -RowGuid
                                         ChildDtos

Я хочу добавить дочерний TreeViewDto в указанный c родительский узел, где выполняется условие.

Я нашел похожий тип решения добавить узел, чтобы указать c дочерний узел , но это не помогло мне.

То, что я пробовал до сих пор, это -

private TreeViewDto FindNode(TreeViewDto root, Guid target)
{
    foreach (var node in root.ChildDtos)
    {
        if (node.Nodes.Count > 0)
            return FindNode(root, target);
        if (node.RowGuid == target)
            return node;
    }
    return null;
}

Проблема в том, что выше метод возвращает только один узел, но мне нужно дерево, в котором выполняется условие. или я хочу добавить ChildDto к тому исходному дереву, где совпадают условия.

* Примечание. Дерево может иметь любое число дочерних элементов.

Заранее спасибо.

...