using System.Collections.Generic;
using System.Web.UI.WebControls;
public static void Main()
List<string> versionsList = new List<string>();
versionsList.Add("1.3.0-rc2-20119-1000");
versionsList.Add("1.3.0-rc2-20107-3546");
versionsList.Add("1.1.0-rc2-564-123");
versionsList.Add("1.1.1");
versionsList.Add("1.1.2");
versionsList.Add("1.1.0");
versionsList.Add("1.1.0-rc2");
versionsList.Add("1.2.0-rc1-20115-1000");
versionsList.Add("1.3.0-rc2");
versionsList.Add("1.2.0");
versionsList.Add("1.3.0");
versionsList.Add("1.3.0-rc2-20119-1245");
versionsList.Add("1.3.0-rc3");
var sortedList = versionsList.OrderBy(x => x.Split('.')[0])
.ThenByDescending(x => x.Split('.')[1])
.ThenByDescending(x => x.Split('.')[2].ToString().Split('-')[0])
.ThenBy(x => x.Split('-')[1].ToString().Split('-')[0]);
var items = sortedList.Select(str => new ListItem
foreach(var item in items)
Console.WriteLine(item.Value);
Console.WriteLine(item.Value.Split('-')[1].ToString().Split('-')[0]);