我有一个字符串列表。每个字符串都遵循模式"{Path} \UpdateTo{Version}-{Order}"。
我需要将列表排序,以便最低版本号位于顶部。在存在多个具有相同版本号的文件的情况下,会附加可选的订单参数。如果任何字符串中存在订单,则应出现在没有订单号的具有相同版本号的字符串上面。
例如,给定以下列表(请注意,项目是随机排序的):
结果将是:
我需要将列表排序,以便最低版本号位于顶部。在存在多个具有相同版本号的文件的情况下,会附加可选的订单参数。如果任何字符串中存在订单,则应出现在没有订单号的具有相同版本号的字符串上面。
例如,给定以下列表(请注意,项目是随机排序的):
var files = new List<string>() {
@"C:\Migrations\UpdateTo1.2-2",
@"C:\Migrations\UpdateTo1.5-2",
@"C:\Migrations\UpdateTo1.2",
@"C:\Migrations\UpdateTo1.4",
@"C:\Migrations\UpdateTo1.1",
@"C:\Migrations\UpdateTo1.5",
@"C:\Migrations\UpdateTo1.2-1",
@"C:\Migrations\UpdateTo1.5-1"
};
结果将是:
var files = new List<string>() {
@"C:\Migrations\UpdateTo1.1",
@"C:\Migrations\UpdateTo1.2-1",
@"C:\Migrations\UpdateTo1.2-2",
@"C:\Migrations\UpdateTo1.2",
@"C:\Migrations\UpdateTo1.4",
@"C:\Migrations\UpdateTo1.5-1",
@"C:\Migrations\UpdateTo1.5-2",
@"C:\Migrations\UpdateTo1.5"
}
我一直试着想出各种创意,但到目前为止我的尝试都是一团糟。如果有人能帮忙,我会非常感激。谢谢。