List<string> list = new List<string>() { "10S", "XS", "80", "5S", "160", "40S", "80S", "STD", "40", "XXS" };
// filter out numbers:
int temp;
var newList = (from item in list where int.TryParse(item, out temp) select item).ToList();
// sort by number and get back string:
newList = newList.Select(x => int.Parse(x)).OrderBy(x => x).Select(x => x.ToString()).ToList();
// sort the rest by string:
var second = list.Except(newList).OrderBy(x => x).ToList();
// Merge the two back together
newList.AddRange(second);
newList は次のようになります: { "40", "80", "160", "5S", "10S", "40S", "80S", "STD", "XS", "XXS" };