【发布时间】:2017-04-28 11:29:50
【问题描述】:
在 C# 中,我希望有一个在当前文化中按字母顺序(不区分大小写)排序的名称列表,并在该列表的末尾自动排序的“假名”。
如果排序使用 ASCII,我们可以使用 '{' 因为它在 'z' 之后,所以它总是在之后排序。但是,这通常不适用于基于文化的排序。
现在我正在使用适用于英语的“ZZZZZZZZZZZ”,但我知道这不是正确的答案 - 有没有好的方法?
(我知道一种选择是在排序后将它们放在最后 - 不幸的是,在这种情况下这并不简单)
var strings = new[] {"abc", "zzz", "ZZZ", "{"};
var sortedStrings = strings.OrderBy(x => x, StringComparer.Create(new CultureInfo("en-GB"), ignoreCase: true));
Console.WriteLine(string.Join(",", sortedStrings));
// gives {,abc,zzz,ZZZ
【问题讨论】:
-
你能举一个使用
{不起作用的例子吗? -
你能给我们一些输入和输出的例子吗?
-
已编辑以举例说明 { 位于列表的前面。