:
var match = Regex.Match(text, @"^(\d+) (.*)$");
match.Groups[0].Value - , match.Groups[1].Value - ( "", " " ..)
LINQ ( , ):
string[] titles = new[] { "2008 Arrears", "2009 Arrears" };
var sortedTitles =
from title in titles
let match = Regex.Match(title, @"^(\d+) (.*)$")
orderby match.Groups[0].Value descending, match.Groups[1].Value
select title;
listBox.ItemsSource = sortedTitles.ToArray();
; , - LINQ:
var sortedTitles =
from title in titles
let year = new string(title.TakeWhile(ch => char.IsDigit(ch)).ToArray())
let remainder = title.Substring(year.Length).Trim()
orderby year descending, remainder
select title;