Мне нужно заполнить древовидный элемент управления пользовательским интерфейсом некоторыми элементами (конечно, в родительских-child1-child2 -... дочернихN-отношениях), и перед продолжением я хочу убедиться, что моя коллекция, которая содержит содержимое упорядочивается следующим образом:C# tree/collection algorithm
Каждый объект (в данном случае экземпляр моего класса категории) из моей коллекции (ObservableCollection, который не упорядочен) имеет общедоступное свойство (ParentCategoryID как строку), которое указывает на другой символ ' Категория ", которая будет его родителем в моем дереве. Узел в дереве может иметь 0 или любое количество детей.
Таким образом, при заполнении дерева каждый объект категории, который должен быть отображен, уже имеет свою «родительскую категорию» (на основе идентификатора родительской категории) в коллекции.
Какой алгоритм следует использовать для обеспечения того, чтобы моя коллекция упорядочивалась таким образом, прежде чем добавлять элементы в дерево?
Спасибо за это. Кажется, что он работает нормально, за исключением случаев, когда вы устанавливаете родительскую категорию в категорию, которая не существует. В этом случае он выдает исключение StackOverflow. Я использовал этот код в цикле foreach SortForTree (в другом плече)? : if (source.Find (delegate (Категория o) {return o.Name == c.ParentCategoryID;})! = null) {temp.Add (c); } else continue ....? –
Хороший улов. Смешно, что я написал код на StackOverflow, который вызывает StackOverflow! Я обновил код, чтобы включить исправление в несколько иной форме. – Robin