C# 字符串的排序列表

C# 字符串的排序列表,c#,C#,当我尝试在C#中对字符串列表进行排序时,结果有点奇怪 List<string> a = new List<string>(); a.Add("test1"); a.Add("test12"); a.Add("bbb"); a.Add("a"); a.Add("aaa"); a.Add("AAAaaAA"); a.Sort(); 我不明白为什么 aaa AAAaaAA 是在最后吗? 有人能解释为什么会这样吗?这是因为你的文化。我是丹麦人,我也得到了同样的结果。(可能是

当我尝试在C#中对字符串列表进行排序时,结果有点奇怪

List<string> a = new List<string>();
a.Add("test1");
a.Add("test12");
a.Add("bbb");
a.Add("a");
a.Add("aaa");
a.Add("AAAaaAA");
a.Sort();
我不明白为什么

aaa 
AAAaaAA
是在最后吗?
有人能解释为什么会这样吗?

这是因为你的文化。我是丹麦人,我也得到了同样的结果。(可能是因为“aa”是一个“å”)

将此项添加到列表之前,您将获得预期的结果

要让其他人复制此问题,请执行以下操作:

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("da");
解决方案:

a.Sort(StringComparer.InvariantCulture);

请澄清调用
Sort
后如何验证结果。我在这里看到了一个不同的结果,这是一个示例,它看起来基本相同,但区别在于底部的“a”是不同的字符。这不是问题中复制粘贴的结果。@sarh这是一个多么棒的捕获!!丹麦人也在这里,所以这可能是问题所在。是否可以只对特定的排序使用“en”区域性?解决这个问题:a.sort(StringComparer.InvariantCulture);答案的措辞可能是错误的,但关于结果为何如此的基本原因是正确的。我不是丹麦人,但如果我飞到你所在的地方,在你的计算机上执行相同的代码,我会得到相同的结果。但我明白你的意思。
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("da");
a.Sort(StringComparer.InvariantCulture);