Вот мое предложение для вас.Создайте объект данных (выберите более подходящее имя и добавьте еще несколько свойств, если необходимо), например,
public class DataNode
{
public int Id { get; private set; }
public string Name { get; set; }
public List<DataNode> Children { get; private set; }
public DataNode(int id, string name)
{
Id = id;
Name = name;
Children = new List<DataNode>();
}
}
Создайте список таких узлов, как var dataNodeList = new List<DataNode>();
, и добавьте все элементы, у которых нет родителя напрямуюв этот список.Добавьте каждого потомка в список родителей Children
с помощью parentid
.Чтобы найти родителя в вашем дереве, используйте эту функцию:
public DataNode FindElementById(IEnumerable<DataNode> elementsToSearch, int id)
{
foreach (var dataNode in elementsToSearch)
{
if (dataNode.Id == id)
{
return dataNode;
}
var found = FindElementById(dataNode.Children, id);
if (found != null)
{
return found;
}
}
return null;
}