【发布时间】:2020-08-21 16:12:41
【问题描述】:
我大部分时间都在整理,但我的排序有一个小问题。
我想按几个特定的单词对列表进行排序,这个列表可能会有对,例如 Compiled Box 和 Box。我想要配对的那些项目。一个词之前不必有其他词,例如“Sale”
例子:
List<string> wordList = new List<string> { "Compiled Box", "Office Order", "Shop Order",
"Box", "Compiled Thing", "Thing", "Sale" };
List<String> newList = wordList
.OrderByDescending(item => item.Contains("Shop Order"))
.ThenBy(item => item.Contains("Office Order"))
.ThenBy(item => item.Replace("Compiled", ""))
.ThenBy(item => item).ToList();
我的输出是:
Shop Order
Compiled Box
Compiled Thing
Box
Sale
Thing
Office Order
我想要的输出是:
Shop Order
Office Order
Compiled Box
Box
Sale
Compiled Thing
Thing
我明白为什么我得到了我得到的输出,但我对如何在这里实现预期的结果并不乐观?谢谢
【问题讨论】:
-
您能用文字解释您的订单吗?而且,除了这 6 个值之外,您是否想要对其他事物进行排序?其他可能的值是什么,它们将如何在列表中排序?
-
该列表可能包含也可能不包含“Shop Order”和“Office Order”字样。列表中的单词可能会或可能不会以“已编译”一词开头,因此可能还有一些其他词,例如“绘图”(将在我要创建的列表中的位置 [4])这是一个非常奇怪的排序,希望这能澄清一点。
-
这不是我运行您的代码时得到的顺序。当我将第一个
ThenBy替换为ThenByDescending时,我收到了您的订单。