我想排序字符串(「A」,「_」,「a」)在C#中的LINQ使用ASCII順序,而忽略大小寫敏感。按照ASCII table,我感興趣的字符串是:LINQ OrderBy igorning與真正的ASCII排序案例
- A = 65
- _ = 95
- A = 97
所以我希望可以將輸出爲
A,_,a
但是我嘗試了所有的StringComparer變體,他們都沒有給我所需的輸出。以下是我的測試程序和輸出:
string[] words = { "A", "_", "a" };
var sortedWords = words.OrderBy(a => a, StringComparer.OrdinalIgnoreCase);
Console.WriteLine("OrdinalIgnoreCase: " + string.Join(", ", sortedWords));
sortedWords = words.OrderBy(a => a, StringComparer.CurrentCultureIgnoreCase);
Console.WriteLine("CurrentCultureIgnoreCase: " + string.Join(", ", sortedWords));
sortedWords = words.OrderBy(a => a, StringComparer.InvariantCultureIgnoreCase);
Console.WriteLine("InvariantCultureIgnoreCase: " + string.Join(", ", sortedWords));
輸出:
OrdinalIgnoreCase:A,一,_
CurrentCultureIgnoreCase:_,A,A
InvariantCultureIgnoreCase:_, A,a
.net fiddle這裏。
如何根據ASCII排序對數組進行排序以獲取「A,_,a」?
就收回我的downvote,你的回答的第一個版本是使用'StringComparer.Ordinal ....'這看起來混亂,就像你的建議同樣的事情,第一線 – Habib
@Habib不,我的答案是最小的,我一直在尋找一些參考。 – xanatos