OrderBy中出现意外结果

and*_*kow 3 .net c# asp.net-core

我在运行测试用例集时偶然发现了这一点,以便按字母顺序订购电子邮件.

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
Run Code Online (Sandbox Code Playgroud)

我在.Net 4.6.1和.Net Core 1.0,2.0和2.1中都有这种行为.

我在这里遗漏了什么,或者这确实是一个奇怪的错误?

小智 5

这是由于您正在运行它的文化

AA将被解释为Å在某些文化中,并且这在词汇之后是ZB

使用IComparer<_>覆盖行为的重载.