Вопрос:

C # Linq OrderBy специальный компаратор конкретных букв перед цифрами

c# linq

8 просмотра

1 ответ

199 Репутация автора

Скажем, у меня есть следующий список:

var lettersAndNumbers = new List<string> { "5", "kl", "1", "st", "3" };

Как использовать OrderBy для сортировки списка, где я могу указать, что kl должен быть первым элементом, а st - следующим, а оставшаяся последовательность должна быть упорядочена по номерам от наименьшего к наибольшему?

Я знаю, что мне нужно использовать пользовательский компаратор. Я попытался и создал класс сравнения, реализующий ICompareable, но я не могу заставить его работать. Буду признателен за любую оказанную помощь.

Автор: Mike Hawkins Источник Размещён: 11.08.2019 06:50

Ответы (1)


0 плюса

31511 Репутация автора

Вам не нужен компаратор для этого. Просто попробуйте что-то вроде этого:

var res = lettersAndNumbers.OrderBy(c => !char.IsDigit(c[0]) ? 0 : 1).ToList();
Автор: Salah Akbari Размещён: 11.08.2019 06:56
Вопросы из категории :
32x32