LINQ OrderBy没有正确排序

时间:2018-02-09 07:02:20

标签: c# linq

我希望有人可以在这里证明我错了:)

如果我这样做:

List<string> a = new List<string> { "b", "c", "a", "aa" };
var b = a.OrderBy(o => o).ToList();

我希望'b'的结果是:

a
aa
b
c

相反,我得到的结果是:

a
b
c
aa

如何让OrderBy进行“正确”的字母排序? 我错了吗? :)

2 个答案:

答案 0 :(得分:123)

您处于丹麦文化中,将aa视为å并将其置于ø之后。您可以传递一个与OrderBy行为不同的字符串比较器来更改它:

var b = a.OrderBy(o => o, StringComparer.InvariantCulture).ToList();

答案 1 :(得分:20)

很可能是文化的东西。你可以试试这个:

List<string> a = new List<string> { "b", "c", "a", "aa" };
var b = a.OrderBy(o => o, StringComparer.InvariantCultureIgnoreCase).ToList();