Неожиданный результат в OrderBy - PullRequest
0 голосов
/ 11 октября 2018

Я наткнулся на это, выполняя тестовый набор с алфавитным порядком упорядочивания писем.

var test1 = new List<string>
{
    "ZZZ", "AAA", "BBB"
};

var result1 = test1.OrderBy(t => t).ToList();
// Expected: AAA, BBB, ZZZ
// Result: BBB, ZZZ, AAA

var test2 = new List<string>
{
    "ZK", "AB", "BA"
};

var result2 = test2.OrderBy(t => t).ToList();
// Expected: AB, BA, ZK
// Result: AB, BA, ZK

Такое поведение наблюдается как в .Net 4.6.1, так и .Net Core 1.0, 2.0 и 2.1.

Я что-то здесь упускаю или это действительно странная ошибка?

1 Ответ

0 голосов
/ 11 октября 2018

Это связано с тем, что культура, в которой вы работаете, под

AA будет интерпретироваться как Å в некоторых культурах, и это лексически после Z и B

Используйте перегрузку, которая принимает IComparer<_>, чтобы переопределить поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...