Я пытаюсь использовать IComprarer для сложной сортировки. У меня есть этот сложный тип (для простоты, три INTS):Использование IComparer для группировки и сортировки
ID | A | B
1 | 1 | 10
2 | 3 | 20
3 | 1 | 30
4 | 3 | 5
5 | 2 | 15
А мне нужно сортировать по B, но мне нужно держать вместе. B может быть ASC или DESC, но я не могу отделить «A»
Он должен заказать этот путь:
ID | A | B
3 | 1 | 30
1 | 1 | 10
2 | 3 | 20
4 | 3 | 5
5 | 2 | 15
Там нет ничего особенного в заказе, важные вещи являются: B заказывается и тот же А не должен быть отделен.
Я пробовал:
public int Compare(Comanda x, Comanda y)
{
if (x.A == y.A) return 0;
return x.B.CompareTo(y.B);
}
Но не работает, и я даже не знаю, как спросить его Google, «группа» ключевое слово не поможет.
А также попытался сортировать дважды, что, очевидно, не работает (отменил заказ B).
list.Sort(new SortByB());
list.Sort(new SortByA());
Как это сделать? Thanks
Это не дубликат «Список C# <> Сортировка по x, а затем y», потому что я не хочу делать двойную сортировку. Я хотел ГРУППУ
Похоже, что вы хотите группе А, то порядок на макс B в каждой группе, а также заказать элементы в группах по В. Это не может быть сделано с помощью 'IComparer'. – juharr
Возможный дубликат [C# List <> Сортировать по x, затем y] (http://stackoverflow.com/questions/289010/c-sharp-list-sort-by-x-then-y) – Sebi
@Sebi это не , Мне не нужна двойная сортировка, мне нужна GROUP, а затем сортировка – Rafael