在使用特定文化的同时进行排序 - "BB"可能在丹麦语和挪威语的"AA"之前排在第一位

dle*_*ech 5 .net c# sorting .net-4.0

今天我注意到C#中有一个有趣的排序行为.我有两个列表,我对它们进行排序:

var list1 = new List<string> { "A", "B", "C" };
var list2 = new List<string> { "AA", "BB", "CC" };
list1.Sort();
list2.Sort();
Run Code Online (Sandbox Code Playgroud)

这两个列表现在包含:

>> list1
[0]: "A"
[1]: "B"
[2]: "C"

>> list2
[0]: "BB"
[1]: "CC"
[2]: "AA"
Run Code Online (Sandbox Code Playgroud)

为什么AA放在最后?

这是一个演示:http://ideone.com/QCeUjx

dle*_*ech 7

事实证明,由于我使用丹麦文化设置,.NET假定"AA"是丹麦字母"Å",它位于丹麦字母的末尾.

设置区域设置以en-US给出我期望的排序顺序("AA","BB","CC").

本文有一些背景信息.