Пользовательская логика сортировки в OrderBy с использованием LINQ

Каким будет правильный способ сортировки списка строк, где я хочу, чтобы элементы, начинающиеся с подчеркивания ‘_’, находились в нижней части списка, в противном случае все будет в алфавитном порядке.

Прямо сейчас я делаю что-то вроде этого,

autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a ) 

Если вы хотите индивидуальный заказ, но не хотите поставлять компаратор, вы можете получить его – стиль sql:

 autoList .OrderBy(a => a.StartsWith("_") ? 2 : 1 ) .ThenBy(a => a); 

Я думаю, вам нужно использовать OrderBy(Func<>, IComparer<>) и указать свой собственный Comparer который будет реализовывать вашу пользовательскую логику.

Используйте перегрузку OrderBy, которая принимает IComparer , первый аргумент Func будет кормить компаратора, а оттуда вам нужно сравнить строки. Сначала оговоритесь о том, что один или оба начинаются с _ , а затем оттуда вам, вероятно, понадобится string.Compare _ и просто использовать стандартную string.Compare их сортировку за первой _

  • Пагинация в веб-приложении REST
  • DataGridView с использованием SortableBindingList
  • как вы вставляете значение в отсортированный вектор?
  • C ++ сортировка и отслеживание индексов
  • Как отсортировать массив структур с помощью нескольких значений?
  • MySQL Нелегальное сочетание сортировок
  • Как использовать std :: sort с вектором структур и функцией сравнения?
  • Как я могу сортировать ListBox, используя только XAML и без кода?
  • Как отсортировать ArrayList, используя несколько критериев сортировки?
  • Естественный порядок сортировки в C #
  • Очень запутано в выводе типа Java 8 Comparator
  • Давайте будем гением компьютера.