Member 11543226 Ответов: 1

Как сортировать записи в списке?


У меня есть следующие данные в моем списке, и я хочу отсортировать их в следующем порядке.

записи выглядят следующим образом,

List<String> codeb = new List<string>();
           codeb.Add("CH-01-0223,B");
           codeb.Add("CH-01-0220,A");
           codeb.Add("AL-01-0023,B");
           codeb.Add("AL-01-0200,A");
           codeb.Add("AL-02-0101,B");
           codeb.Add("AL-02-0201,A");


Я хочу получить результат, как показано ниже,

AL-01-0200,A
AL-01-0023,B
AL-02-0201,A
AL-02-0101,B
CH-01-0220,A
CH-01-0223,B


Что я уже пробовал:

Я попробовал использовать
codeb.sort()


но это дает сортировку, как показано ниже,
AL-01-0023,B
AL-01-0200,A
AL-02-0101,B
AL-02-0201,A
CH-01-0220,A
CH-01-0223,B

Patrice T

Покажите один фрагмент кода, который строит список, сортирует и отображает результат.

1 Ответов

Рейтинг:
2

OriginalGriff

Вы не можете просто использовать "стандартную сортировку строк" и ожидать, что она даст вам результаты, которые не находятся в стандартном порядке строк - а порядок строк основан на сравнении каждого символа по очереди слева направо, и все сравнение основано на первом другом символе.

Вам нужно предоставить пользовательский метод сортировки и вызвать его из OrderBy:

var sorted = codeb.OrderBy(s => s, Comparer<string>.Create((l, r) => MySortMethod(l, r)));

Ваш метод будет выглядеть так:
private int MySortMethod(string l, string r)
    {
    ...
    }
И возвращает -1, если l меньше r, 0, если они одинаковы, и 1, Если l больше r.

Поскольку я понятия не имею, почему ваш требуемый порядок сортировки таков, вам придется написать этот бит самостоятельно!