区分大小写以2个首字母排序

时间:2017-03-27 05:41:15

标签: c# .net

我需要一个linq / lambda表达式来排序字符串列表,但只排序前2个字母。应首先对大写字母进行排序。

MyList.Sort((s1, s2) =>
    s1.Substring(0, 2).CompareTo(
    s2.Substring(0, 2)));

这就是我现在所拥有的。它成功地对前两个字母进行排序,但是当它区分大小写时它会失败......

编辑:这是结果并且有效:

   var sorted = MyList.OrderBy(x =>x[0]).ThenBy(x => x[1]).ToList();

1 个答案:

答案 0 :(得分:6)

为什么不是一个简单的OrderBy().ThenBy,因为它们会对排序进行区分大小写的比较,请考虑以下代码:

List<string> unOrderedList = new List<string>() { "bAC", "ABC", "aBc", "abc", "cAb", "Abx", "bbc", "bBx", "cAA" };
var orderedList = unOrderedList.OrderBy(x => x[0]).ThenBy(y=>y[1]).ToList();

在这种情况下,orderedList的输出为:

ABC
Abx
aBc
abc
bAC
bBx
bbc
cAb
cAA

查看示例here,您可以看到Abx在列表中的排名高于aBc,您可以在bBx和{{1}中看到类似的情况}。