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 выполнить "правильный" алфавитный вид? Я просто ошибаюсь? :)

Ответы

Ответ 1

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

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

Ответ 2

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

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