using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public class MyThing
{
public int name { get; set; }
public string myNumber { get; set; }
}
public static void Main()
{
var list = new List<MyThing>() {
new MyThing{myNumber="12-22"},new MyThing{myNumber="13-01"},new MyThing{myNumber="12-030"}
};
var orderedLikeVersion = list
.Select(t => new
{
Thing = t,
Parts = t.myNumber.Split('-')
}).Select(x => new
{
x.Thing,
Version = new Version(int.Parse(x.Parts[0]), int.Parse(x.Parts[1]))
})
.OrderByDescending(x => x.Version)
.Select(x => x.Thing);
foreach(var thing in orderedLikeVersion)
Console.WriteLine(thing.myNumber);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICBwdWJsaWMgY2xhc3MgTXlUaGluZwogICAgICAgIHsKICAgICAgICAgICAgcHVibGljIGludCBuYW1lIHsgZ2V0OyBzZXQ7IH0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBteU51bWJlciB7IGdldDsgc2V0OyB9CiAgICAgICAgfQogICAgCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJICAgIHZhciBsaXN0ID0gbmV3IExpc3Q8TXlUaGluZz4oKSB7IAogICAgICAgICAgICAgICAgbmV3IE15VGhpbmd7bXlOdW1iZXI9IjEyLTIyIn0sbmV3IE15VGhpbmd7bXlOdW1iZXI9IjEzLTAxIn0sbmV3IE15VGhpbmd7bXlOdW1iZXI9IjEyLTAzMCJ9IAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgdmFyIG9yZGVyZWRMaWtlVmVyc2lvbiA9IGxpc3QKICAgICAgICAgICAgICAgIC5TZWxlY3QodCA9PiBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUaGluZyA9IHQsCiAgICAgICAgICAgICAgICAgICAgUGFydHMgPSB0Lm15TnVtYmVyLlNwbGl0KCctJykKICAgICAgICAgICAgICAgIH0pLlNlbGVjdCh4ID0+IG5ldwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHguVGhpbmcsCiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9IG5ldyBWZXJzaW9uKGludC5QYXJzZSh4LlBhcnRzWzBdKSwgaW50LlBhcnNlKHguUGFydHNbMV0pKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5PcmRlckJ5RGVzY2VuZGluZyh4ID0+IHguVmVyc2lvbikKICAgICAgICAgICAgICAgIC5TZWxlY3QoeCA9PiB4LlRoaW5nKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZm9yZWFjaCh2YXIgdGhpbmcgaW4gb3JkZXJlZExpa2VWZXJzaW9uKQogICAgICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUodGhpbmcubXlOdW1iZXIpOwoJfQp9