我有以下未排序的列表:
List<string> myUnsortedList = New List<string>();
myUnsortedList.Add("Alpha");
myUnsortedList.Add("(avg) Alpha");
myUnsortedList.Add("Zeta");
myUnsortedList.Add("Beta");
myUnsortedList.Add("(avg) Beta");
myUnsortedList.Add("(avg) Zeta");
Run Code Online (Sandbox Code Playgroud)
我想按字母顺序降序排序,然后在正常值之后使用(avg)值:
最终结果:Zeta,(平均)Zeta,Beta,(平均)Beta,Alpha,(平均)Alpha
我的应用程序是写的C#,我想用它LINQ来完成排序
这应该适用于你需要的东西,假设"(avg)"是唯一的特殊前缀
这将命令所有下降的顺序不包括"(平均)"然后它将按字符串长度排序这样具有"(avg)"前缀的字符串将在没有
var result = myUnsortedList.OrderByDescending(x => x.Replace("(avg) ", "")).ThenBy(x => x.Length);
Run Code Online (Sandbox Code Playgroud)
最后结果: