【问题标题】:Why does C# OrderBy with string order lowercase before uppercase?为什么带有字符串的 C# OrderBy 在大写之前是小写?
【发布时间】:2020-07-10 19:44:34
【问题描述】:

我正在使用 C# 进行编码,我遇到的情况需要我订购一系列单个字符串。 示例:

var list = new List<string> { "1", "A", "a", "0" };

由于我们都知道ASCII 表在 Lower 之前列出了 Upper,所以我希望它是这样排序的 (0, 1, A, a),但它是这样排序的 (0, 1, 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

谁能回答我这个问题?

【问题讨论】:

标签: c# string list character ascii


【解决方案1】:

你可以使用OrderBy(a =&gt; 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

【讨论】:

  • 也许然后引用该页面(或将其标记为重复)。
  • @mjwills 谢谢你,你是对的。但我认为最好回答这个问题而不是链接或将其标记为重复问题
猜你喜欢
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 2021-02-26
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多