using System.Collections.Generic;
using System.Text.RegularExpressions;
public static void Main()
List<String> list = new List<String>() { "a 1", "a 20", "a 2", "a 12", "a 25", "b 1", "b 5"};
var ordered = list.OrderBy(x => PadNumbers(x));
foreach (var items in ordered)
Console.WriteLine(items);
public static string PadNumbers(string input)
return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(2, '0'));