为什么.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)
| 归档时间: |
|
| 查看次数: |
3137 次 |
| 最近记录: |