У меня есть один класс, который имеет свой список, поэтому его можно представить в древовидной структуре.
Я вынимаю плоский список этих классов и хочу его развязать.
public class Group
{
public int ID {get;set;}
public int? ParentID {get;set;}
public List<Group> Children {get;set;}
}
Я хочу иметь возможность сделать следующее
List<Group> flatList = GetFlatList() //I CAN ALREADY DO THIS
List<Group> tree = BuildTree(flatList);
ParentID связан с свойством ID в его родительской группе, если это не было очевидно.
ИЗМЕНИТЬ
Существует некоторая путаница в том, почему я возвращаю список, а не один объект.
Я создаю элемент пользовательского интерфейса, который имеет список элементов, каждый из которых имеет дочерний элемент. Таким образом, в исходном списке нет корня node. Кажется, все решения пока не работают.
Это означает, что мне по существу нужен список структур типа дерева с использованием класса Group.