我有一个三维元组数组:
var CountList = new List<Tuple<int, int, int>>();
Run Code Online (Sandbox Code Playgroud)
所需的排序在第一个int上以数字方式递增,然后在第二个int上以数字方式递减,因此
5, 4, 7
4, 5, 6
5, 2, 3
3, 5, 2
2, 4, 1
2, 6, 4
Run Code Online (Sandbox Code Playgroud)
变
2, 6 ,4
2, 4, 1
3, 5, 2
4, 5, 6
5, 4, 7
5, 2, 3
Run Code Online (Sandbox Code Playgroud)
有没有为List.Sort()指定更多搜索功能的方法,或者我是否需要将信息拆分到单独的列表,对每个组执行降序排序,然后将各个列表项添加到"主列表"中所需的升序?
您可以使用LINQ:
CountList = CountList
.OrderBy(t => t.Item1)
.ThenByDescending(t => t.Item2)
.ToList();
Run Code Online (Sandbox Code Playgroud)
使用不太容易理解但可能更有效的方式List.Sort:
CountList.Sort(
(t1, t2) =>
{
int res = t1.Item1.CompareTo(t2.Item1);
return res != 0 ? res : t2.Item2.CompareTo(t1.Item2);
});
Run Code Online (Sandbox Code Playgroud)
List.Sort 对原始列表进行排序,而不是创建新列表.
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |