爲樹狀排序我有一個列表名單通過LINQ
key ParentKey
1 Null
2 1
3 Null
4 Null
5 1
6 4
7 6
8 3
我想在
key ParentKey
1 Null
2 1
5 1
3 Null
8 3
4 Null
6 4
7 6
通過LINQ排序如何才能做到這一點? 任何幫助是最惠康
爲樹狀排序我有一個列表名單通過LINQ
key ParentKey
1 Null
2 1
3 Null
4 Null
5 1
6 4
7 6
8 3
我想在
key ParentKey
1 Null
2 1
5 1
3 Null
8 3
4 Null
6 4
7 6
通過LINQ排序如何才能做到這一點? 任何幫助是最惠康
我相信你想在這裏實現什麼一個DFS命令打印一棵樹。
Linq幫不了你(至少開箱即可)。
我建議適應DFS實現到您的數據結構。見Eric Lippert's suggestion。
,如果你有
public class MyObject{
int Key {get;set;}
int ? ParentKey{get;set;}
}
一個名單,然後進行排序此列表使用:
var list = new List<MyObject>(){ new MyObject{ Key = 1 , ParentKey = null } , new MyObject{Key=2 , PatentKey = 1} /* and so on */};
var sortedList = list.OrderBy(o=>o.ParentKey , new MyComparer());
public class MyComparer : IComparer<MyObject>
{
public int Compare(MyObject o1, MyObject o2)
{
if (ol.HasValue && o2.HasValue)
{
if (ol.ParentKey.Value == o2.ParentKey.Value)
return 0;
return ol.ParentKey.Value > o2.ParentKey.Value ? 1 : -1;
}
else
return 0;
}
}
這將產生精確的期望序列
請你能解釋一下你嘗試過什麼? –
我沒有任何想法如何開始甚至...我可以使用循環來完成工作,但我想通過linq – thewayman