试图排序字符串的列表
List<string> strings = new List<string>() { "N3 2021","N4 2021","N1 2022","N2 2022","N4 2022","N3 2022","N2 2023","N1 2023","N3 2023"};
var orderedList = strings.OrderBy(x => x.Substring(2).Trim()).ToList();
Console.WriteLine(String.Join(", ", orderedList));当前产出:
N3 2021,N4 2021,N1 2022,N2 2022,N4 2022,N3 2022,N2 2023,N1 2023,N3 2023
期望产出:
N3 2021,N4 2021,N1 2022,N2 2022,N3 2022,N4 2022,N1 2023,N2 2023,N3 2023
任何帮助都将不胜感激。谢谢
更新:
解决办法是:
List<string> strings = new List<string>() { "N3 2021","N4 2021","N1 2022","N2 2022","N4 2022","N3 2022","N2 2023","N1 2023","N3 2023"};
var orderedList = strings.OrderBy(x => x.Substring(2).Trim()).ThenBy(y=>y).ToList();
Console.WriteLine(String.Join(", ",orderedList));发布于 2022-08-31 03:28:45
在我看来,你是按年份排序,然后用某种前缀代码排序。由于年份更重要,您需要将其移动到代码的左边,以便进行排序。
static string RearrangeString(string input)
{
var tokens = input.Split(' ');
return string.Join(" ", tokens.Reverse() );
}
public static void Main()
{
var strings = new List<string>() { "N3 2021","N4 2021","N1 2022","N2 2022","N4 2022","N3 2022","N2 2023","N1 2023","N3 2023"};
var orderedList = strings.OrderBy(RearrangeString).ToList();
Console.WriteLine(String.Join(", ", orderedList));
}发布于 2022-08-31 03:43:30
作者提供的实际解决方案,见问题编辑。
这是一个小提琴
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<string> strings = new List<string>() { "N3 2021","N4 2021","N1 2022","N2 2022","N4 2022","N3 2022","N2 2023","N1 2023","N3 2023"};
var orderedList = strings.OrderBy(x => x.Substring(2).Trim()).ThenBy(y=>y.Substring(0)).ToList();
Console.WriteLine(String.Join(", ",orderedList));
Console.ReadLine();
}
}https://stackoverflow.com/questions/73550478
复制相似问题