using System.Collections.Generic;
public static void Main()
var theList = new List<string> { "4 tr", "plan 8", "", "12tr" };
foreach (var item in theList
.OrderBy(x=> x.Length==0 )
.ThenBy(x => { return x.Length > 0 && x.Substring(0, 1).All(char.IsNumber); })
.ThenByDescending(x => int.Parse("0" +(new String(x.Where(Char.IsDigit).ToArray()))))