[英]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.