【发布时间】:2017-08-11 20:53:45
【问题描述】:
我正在尝试使用 IComprarer 进行复杂排序。 我有这个复杂的类型(为简单起见,三个整数):
ID | A | B
1 | 1 | 10
2 | 3 | 20
3 | 1 | 30
4 | 3 | 5
5 | 2 | 15
我需要按 B 排序,但我需要将 A 放在一起。 B 可以是 ASC 或 DESC,但我不能分隔 'A'
它必须这样排序:
ID | A | B
3 | 1 | 30
1 | 1 | 10
2 | 3 | 20
4 | 3 | 5
5 | 2 | 15
A 订单没有什么特别之处,重要的是: B是有序的,同一个A不能分开。
我试过了:
public int Compare(Comanda x, Comanda y)
{
if (x.A == y.A) return 0;
return x.B.CompareTo(y.B);
}
但不起作用,我什至不知道如何向谷歌询问,“组”关键字没有多大帮助。
并且还尝试了两次排序,显然不起作用(丢弃了B顺序)。
list.Sort(new SortByB());
list.Sort(new SortByA());
我该怎么做? 谢谢
这不是“C# List Sort by x then y”的副本,因为我不想进行双重排序。我想分组
【问题讨论】:
-
看起来您想按 A 分组,然后在每个分组中按最大 B 排序,并按 B 对组中的项目进行排序。这不能用
IComparer完成。跨度> -
@Sebi 不是。我不想要双重排序,我想要 GROUP 然后排序
标签: c# sorting grouping icomparer