[英]Case sensitive Order by for 2 first letters
我需要一个linq / lambda表达式,该表达式对字符串列表进行排序,但仅对前2个字母进行排序。 大写字母应首先排序。
MyList.Sort((s1, s2) =>
s1.Substring(0, 2).CompareTo(
s2.Substring(0, 2)));
这就是我现在所拥有的。 它成功地对前2个字母进行了排序,但是当它区分大小写时就失败了...
编辑:这是结果和工作:
var sorted = MyList.OrderBy(x =>x[0]).ThenBy(x => x[1]).ToList();
为什么不使用简单的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
看到这里的示例,您可以看到Abx
在列表中的位置比aBc
,您可以在bBx
和bbc
看到类似的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.