一尘不染

C#中的字符串排序问题

c#

我有这样的清单

    List<string> items = new List<string>();
    items.Add("-");
    items.Add(".");
    items.Add("a-");
    items.Add("a.");
    items.Add("a-a");
    items.Add("a.a");

    items.Sort();

    string output = string.Empty;
    foreach (string s in items)
    {
        output += s + Environment.NewLine;
    }

MessageBox.Show(output);

输出返回为

-
.
a-
a.
a.a
a-a

我期望结果在哪里

-
.
a-
a.
a-a
a.a

任何想法,为什么“ aa”没有出现在“ aa”之前,而“ a-”出现在“ a”之前。


阅读 878

收藏
2020-05-19

共1个答案

一尘不染

如果您希望字符串排序基于实际字节值而不是当前区域性定义的规则,则可以按顺序排序:

items.Sort(StringComparer.Ordinal);

这将使结果在所有文化中均保持一致(但会在“ 9”之前产生“ 14”的不直观排序,可能不是您想要的)。

2020-05-19