Je m'attendrais à ce que "2-" et "22" soient toujours comparés de la même manière, mais le changement du troisième caractère modifie l'ordre de tri.
string.Compare("2-1","22-", StringComparison.CurrentCulture) //-1
string.Compare("2-2","22-", StringComparison.CurrentCulture) //1
Que diable se passe-t-il ici ?
Au fait, notre culture est en-US.