using System; using System.Collections.Generic; using System.Linq; public class Test { public static void Main() { string[] things= new string[] { "100-1", "100-11", "100-3", "100-20" }; IEnumerable ordered = things .Select(s => new { str = s, firstPart = s.Split('-').ElementAtOrDefault(0), secondPart = s.Split('-').ElementAtOrDefault(1) }) .OrderBy(x => int.Parse(x.firstPart)) .ThenBy(x => int.Parse(x.firstPart)) .Select(x => x.str); foreach (string s in ordered) Console.WriteLine(s); } }