我尝试在 C# 中使用 LINQ 按 ASCII 顺序对字符串(“A”、“_”、“a”)进行排序,同时忽略大小写。根据ASCII表,我感兴趣的字符串是:
所以我期望输出是
一个,_,一个
但是我尝试了所有 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));
输出:
序号忽略大小写:A、a、_
当前文化忽略大小写:_、A、a
InvariantCulture忽略大小写:_、A、a
.net 小提琴在这里。
如何根据 ASCII 顺序对数组进行排序以获得“A, _, a”?