Following the previous comments, I would also implement the custom class IComparer<T> . From what I can assemble, the structure of the elements is either a number or a combination of a number followed by a letter (s). If so, the following implementation of IComparer<T> should be performed.
public class CustomComparer : IComparer<string> { public int Compare(string x, string y) { var regex = new Regex("^(d+)");
With this IComparer<T> you can sort the string list by doing
var myComparer = new CustomComparer(); myListOfStrings.Sort(myComparer);
This has been tested with the following points:
2, 1, 4d, 4e, 4c, 4a, 4b, A1, 20, B2, A2, a3, 5, 6, 4f, 1a
and gives the result:
1, 1a, 2, 20, 4a, 4b, 4c, 4d, 4e, 4f, 5, 6, A1, A2, a3, B2