Что было бы правильным способом отсортировать список строк, где я хочу объекты, запускающиеся с подчеркивания '_', чтобы быть в нижней части списка, иначе все является алфавитным.
Прямо сейчас я делаю что-то вроде этого,
autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )
Если вы хотите пользовательское упорядочивание, но не хотите предоставлять компаратор, вы можете сделать это - sql style:
autoList
.OrderBy(a => a.StartsWith("_") ? 2 : 1 )
.ThenBy(a => a);
Думаю, вам нужно использовать OrderBy (Func <>, IComparer <>)
и указать свой собственный Comparer
, который будет реализовывать вашу пользовательскую логику.
Используйте перегрузку OrderBy, которая принимает IComparer
, первый аргумент Func
будет передавать компаратору, и оттуда вам нужно сравнить строки . Сначала рассмотрите случай, когда один или оба варианта начинаются с _
, а затем вам, вероятно, потребуется удалить _
и просто использовать стандартную строку . Сравните
], чтобы отсортировать их помимо первого _