使用SortedList对列进行排序

问题描述 投票:0回答:1

我有一个包含许多列的表数据,我需要多次排序。例如列包含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行进行第二次排序。但我想不出最好的方法。

c# sorting sortedlist columnsorting
1个回答
0
投票

您可以在Sorted列表中使用LinQ:

var Customsortedlist =  SortedList<T>.OrderBy(e => e.Name)
                                     .ThenByDescending(e => e.Allowance)
                                     .ThenBy(e => e.times );

然后你可以像这样转换它:

dataTable = Customsortedlist.AsDataView().ToTable();
© www.soinside.com 2019 - 2024. All rights reserved.