Используйте List.Sort(Comparison<T> comparison)
с пользовательским сравнением.
Это непроверенный код, так как у меня нет вашей десериализованной структуры, вам может понадобиться придать ей некоторую нулевую обработку, еслиChild.ChildItem
может быть нулевым.
Я также предполагаю, что Child.Type сообщает, является ли закладка папкой или URL-адресом.Если нет, просто измените сравнение return child1.Type.CompareTo(child2.Type);
на что-то, что сортирует по папке / url.
public void SortChildren(List<Child> childList)
{
childList.Sort((child1, child2) =>
{
if (child1.Type == child2.Type)
{
// Sort by name
return child1.Name.CompareTo(child2.Name);
}
else
{
// Sort the type. If this sorts in reverse, swap child1 and child2
return child1.Type.CompareTo(child2.Type);
}
});
// Sort children recursively
foreach(var child in childList)
{
SortChildren(child.Children);
}
}
Начните сортировку с
SortChildren(Root.Other.Children);
Редактировать
Более простой пример сортировки списка:
List<int> myInts = new List<int>{1,5,4,3,2};
myInts.Sort(); // default comparer
myInts.Sort((i1, i2) => { return i2.CompareTo(i1); }); // custom "reverse" comparison