假设我有四个字符串 abc、Abc、Bca 和 bca。要求是这些将按字母顺序排序为 Abc、abc、Bca、bca。
使用此代码:
names.Sort((a, b) => string.Compare(a, b));
排序为abc、Abc、bca、Bca。如果我添加 StringComparison.Ordinal 参数,那么它会排序为 Abc、Bca、abc、bca。我可以传递任何参数使其返回 Abc, abc, Bca, bca 而无需额外进行排序吗?
谢谢
您可以使用自定义比较器,首先不区分大小写排序,然后仅当字符串相同时才区分大小写排序..
names.Sort((a, b) => {
var compare = string.Compare(a, b, StringComparison.OrdinalIgnoreCase);
if (compare != 0)
return compare;
compare = string.Compare(a, b, StringComparison.Ordinal);
return compare;
});