Я пытаюсь сортировать список строк в порядке, соответствующем последовательности, используемой в обычных последовательностях истории версий. Некоторые клиенты начинают с «-» или «Новый» или нескольких других специальных кодов, и я могу использовать LINQ для определения пользовательского порядка сортировки. Однако после того, как рисунок был пересмотрен с Rev A на всем протяжении Rev Z, он становится Rev AA через Rev AZ, затем Rev BA через BZ и так далее. Как я могу сортировать следующий список с помощью LINQ?Сортировка списка строк с использованием linq с настраиваемой сортировкой
у меня есть это в качестве примера блок кода:
List<string> revList = new List<string> { "A", "NC", "New", "AB", "PD", "PD1",
"PD2", "B", "-", "*", "BB", "NA" };
revList = revList.OrderByDescending(i => i.ToLower() == "pd").
ThenByDescending(i => i.ToLower() == "nc").
ThenByDescending(i => i.ToLower() == "na").
ThenByDescending(i => i.ToLower() == "new").
ThenByDescending(i => i.ToLower() == "pd1").
ThenByDescending(i => i.ToLower() == "pd2").
ThenByDescending(i => i.ToLower() == "-").
ThenByDescending(i => i.ToLower() == "*").
ThenBy(i => i).ToList();
foreach (string rev in revList)
Console.WriteLine(rev);
Это производит вывод, как:
PD
NC
NA
NEW
PD1
PD2
-
*
A
AB
B
B
Я хотел бы произвести:
PD
NC
NA
NEW
PD1
PD2
-
*
A
B
AB
BB
Сортировка по длине сначала, например. Вставьте 'ThenBy (i => i.Length) .' перед' ThenBy (i => i) ' –
Иван, вы побеждаете. Хотел бы я проголосовать за ваш ответ, так как это было первым, но это был комментарий. Спасибо. – AuLion
Почему «PD» пришел до «NC» - это нужный результат? –