排序算法 - C#

Mic*_*ern 2 c# linq sorting

我有以下未排序的列表:

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来完成排序

sa_*_*213 6

这应该适用于你需要的东西,假设"(avg)"是唯一的特殊前缀

这将命令所有下降的顺序不包括"(平均)"然后它将按字符串长度排序这样具有"(avg)"前缀的字符串将在没有

var result = myUnsortedList.OrderByDescending(x => x.Replace("(avg) ", "")).ThenBy(x => x.Length);
Run Code Online (Sandbox Code Playgroud)

最后结果:

  • 泽塔
  • (平均)泽塔
  • Beta版
  • (平均)Beta
  • Α
  • (平均)阿尔法

  • 我不认为这可以保证"Zeta"在"(平均)Zeta"之前出现. (4认同)