我有一个有很多列的表数据,我需要对它进行多次排序。例如,列包含Row#、Name、allowance、times……
1, Peter, 2500, 2
2, Steve, 500, 1
3, Peter, 2500, 1
4, Peter, 2600, 2
5, Peter, 2800, 2第一个按名称升序排序,结果为:
1, Peter, 2500, 2
3, Peter, 2500, 1
4, Peter, 2600, 2
5, Peter, 2800, 2
2, Steve, 500, 1按容差降序进行第二次排序,结果为:
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第一个排序已经完成,但是如何做第二个和第三个……是否基于此“主”sortedList进行排序?我的想法是,第二个排序发生在具有相同关键字的邻居中。“彼得”意味着只需要对Row# 1,3,4,5进行第二次排序。但我想不出最好的办法。
发布于 2017-12-28 21:27:36
您可以在排序列表上使用LinQ:
var Customsortedlist = SortedList<T>.OrderBy(e => e.Name)
.ThenByDescending(e => e.Allowance)
.ThenBy(e => e.times );然后,您可以像这样转换它:
dataTable = Customsortedlist.AsDataView().ToTable();https://stackoverflow.com/questions/48008316
复制相似问题