LINQ OrderBy не сортирует правильно


Я надеюсь, что кто-то может доказать, меня неправильно :)

Если я сделаю это:

List<string> a = new List<string> { "b", "c", "a", "aa" };
var b = a.OrderBy(o => o).ToList();

Я ожидал бы, что результат 'b' будет:

a
aa
b
c

вместо этого, результат я получаю:

a
b
c
aa

как я могу заставить OrderBy сделать" правильный " алфавитный сортировку? Я просто ошибаюсь? :)

2 51

2 ответа:

ты в датской культуре, которая лечит aa как å и ставит его после ø соответственно. Вы можете передать компаратор строк, который действует по-разному для OrderBy изменить это:

var b = a.OrderBy(o => o, StringComparer.InvariantCulture).ToList();

скорее всего культурная вещь. Вы можете попробовать это:

List<string> a = new List<string> { "b", "c", "a", "aa" };
var b = a.OrderBy(o => o, StringComparer.InvariantCultureIgnoreCase).ToList();