我有一个包含许多列的表数据,我需要多次排序。例如列包含Row#,Name,allowance,times ...
1, Peter, 2500, 2
2, Steve, 500, 1
3, Peter, 2500, 1
4, Peter, 2600, 2
5, Peter, 2800, 2
1st按名称升序排序,结果为:
1, Peter, 2500, 2
3, Peter, 2500, 1
4, Peter, 2600, 2
5, Peter, 2800, 2
2, Steve, 500, 1
2按允差递减排序,结果为:
5, Peter, 2800, 2
4, Peter, 2600, 2
1, Peter, 2500, 2
3, Peter, 2500, 1
2, Steve, 500, 1
按升序排序,结果为:
5, Peter, 2800, 2
4, Peter, 2600, 2
3, Peter, 2500, 1
1, Peter, 2500, 2
2, Steve, 500, 1
由于某种原因,我们使用SortedList进行第一次排序,使用IComparer将项添加到SortedList以允许重复的键。按名称升序进行第一次排序后,sortedList为:
["Peter"] | 1
["Peter"] | 3
["Peter"] | 4
["Peter"] | 5
["Steve"] | 2
第一种类型已完成,但如何进行第二次和第三次排序...基于此“主”排序列表排序?我的想法是第二种类型发生在具有相同密钥的邻居中,例如“彼得”。意味着只需重新排序#1,3,4,5行进行第二次排序。但我想不出最好的方法。
您可以在Sorted列表中使用LinQ:
var Customsortedlist = SortedList<T>.OrderBy(e => e.Name)
.ThenByDescending(e => e.Allowance)
.ThenBy(e => e.times );
然后你可以像这样转换它:
dataTable = Customsortedlist.AsDataView().ToTable();