我希望有人可以在这里证明我错了:)
如果我这样做:
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进行“正确”的字母排序? 我错了吗? :)
答案 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();