Exactly how you do this will depend on how they are stored.
If those are strings, then it's a little complicated, but it is still possible. Assuming that you want numerical order, first by 1900, then by 1930:
List<string> list1 = new List<string>() {"1909-1930","1921-1925","1907-21","1871-1924","2009-10","456-458","58-66"};
list1 = list1.OrderBy(s => int.Parse(s.Substring(0, s.IndexOf('-'))))
.ThenBy(s => int.Parse(s.Substring(s.IndexOf('-'))))
.ToList();