[英]Why does C# OrderBy with string order lowercase before uppercase?
我正在用 C# 編碼,我遇到了需要我訂購一系列一個字符串的情況。 例子:
var list = new List<string> { "1", "A", "a", "0" };
由於我們都知道ASCII
表在Lower之前列出Upper,我本來希望它是這樣排序的(0, 1, A, a),但它是這樣排序的(0, 1, a, A)
我有一個簡單的例子:
var strs = new List<string> { "1", "A", "a", "0" };
var orderedStrs = strs.OrderBy(l => l);
Console.WriteLine("---strs---");
foreach(var elem in strs){
Console.WriteLine(elem);
}
Console.WriteLine("---orderedStrs---");
foreach(var elem in orderedStrs){
Console.WriteLine(elem);
}
var chars = new List<char> { '1', 'A', 'a', '0' };
var orderedChars = chars.OrderBy(ch => ch);
Console.WriteLine("---chars---");
foreach(var elem in chars){
Console.WriteLine(elem);
}
Console.WriteLine("---orderedChars---");
foreach(var elem in orderedChars){
Console.WriteLine(elem);
}
這是輸出:
---strs---
1
A
a
0
--- orderedStrs---
0
1
a
A
---chars---
1
A
a
0
--- orderedChars---
0
1
A
a
有人可以回答我這個問題嗎?
您可以使用OrderBy(a => a, StringComparer.Ordinal)
var strs = new List<string> { "1", "A", "a", "0" };
var orderedStrs = strs.OrderBy(l => l);
Console.WriteLine("---strs---");
foreach (var elem in strs.OrderBy(a => a, StringComparer.Ordinal))
{
Console.WriteLine(elem);
}
結果
---strs---
0
1
A
a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.