我想按與常用修訂歷史記錄序列中使用的順序相關的順序排序字符串列表。有些客戶以「 - 」或「New」或其他特定代碼開頭,我可以使用LINQ定義自定義排序順序。然而,在修訂版A從修訂版Z一直修訂到修訂版Z之後,它通過Rev AZ變成Rev AA,然後通過BZ修改BA,等等。我如何使用LINQ對以下列表進行排序?使用linq自定義排序字符串排序
我有此作爲代碼的一個例子的塊:
List<string> revList = new List<string> { "A", "NC", "New", "AB", "PD", "PD1",
"PD2", "B", "-", "*", "BB", "NA" };
revList = revList.OrderByDescending(i => i.ToLower() == "pd").
ThenByDescending(i => i.ToLower() == "nc").
ThenByDescending(i => i.ToLower() == "na").
ThenByDescending(i => i.ToLower() == "new").
ThenByDescending(i => i.ToLower() == "pd1").
ThenByDescending(i => i.ToLower() == "pd2").
ThenByDescending(i => i.ToLower() == "-").
ThenByDescending(i => i.ToLower() == "*").
ThenBy(i => i).ToList();
foreach (string rev in revList)
Console.WriteLine(rev);
這將產生輸出爲:
PD
NC
NA
NEW
PD1
PD2
-
*
A
AB
B
B
我想產生:
PD
NC
NA
NEW
PD1
PD2
-
*
A
B
AB
BB
先按「長度」排序,例如在'ThenBy(i => i)之前插入'ThenBy(i => i.Length).'' –
Ivan,you win。我希望自第一次以來我可以爲您的答案投票,但這是一條評論。謝謝。 – AuLion
爲什麼'PD'出現在'NC'是期望的結果? –