Если ваша иерархия будет представлять собой нечто большее, чем простое двухуровневое соглашение, вам нужно написать метод (возможно, рекурсивный), который может перемещаться вверх по дереву, собирая весь «путь» идентификаторов каждого элемента. Если у вас есть этот путь, шаг сортировки довольно прост.
Добавить свойство в NavigateInfo
public string ItemPath { get; set; }
Затем используйте такой метод, чтобы установить это свойство.
public string GetPath(List<NavigationInfo> list, int itemId)
{
NavigationInfo item = list.SingleOrDefault(x => x.Id == itemId);
if (item == null)
{
return "";
}
else
{
return GetPath(list, item.ParentId) + "\\" + itemId;
}
}