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() { 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); } }