c#元组列表多种排序

Dav*_*son 4 c# sorting list

我有一个三维元组数组:

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)

有没有为Lis​​t.Sort()指定更多搜索功能的方法,或者我是否需要将信息拆分到单独的列表,对每个组执行降序排序,然后将各个列表项添加到"主列表"中所需的升序?

Tim*_*ter 5

您可以使用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 对原始列表进行排序,而不是创建新列表.