.NET如何排序特殊字符?

Vad*_*dim 7 .net c# sorting

为什么.NET按照与ASCII表中显示的顺序不同的顺序对字符"+"和"^"进行排序,或者对SQL进行排序.

ASCII表中, "+"的值为42,"^"的值为94但是如果运行如下代码:

var list = new List<string> { "+", "^", "!" };
list.Sort();
Run Code Online (Sandbox Code Playgroud)

该列表将按以下顺序包含值:

{"!","^","+"}

LINQ排序生成相同的结果.有人能告诉我.NET有什么样的做法吗?

dle*_*lev 17

.NET不使用ASCII,它使用Unicode.执行字符串排序时,.NET(默认情况下)使用当前区域性的排序规则.在这种情况下,这些规则表明"^"出现在"+"之前.您可以使用"序数"字符串比较器获得您期望的结果:

var list = new List<string> { "+", "^", "!" };
list.Sort(StringComparer.Ordinal); // Order is "!", "+", "^"
Run Code Online (Sandbox Code Playgroud)