Я сделал тест. У меня есть следующий код.
string[] versions = { "1", "2", "10", "12", "22", "30" };
foreach (var ver in versions.OrderBy(v => v))
{
Console.WriteLine(ver);
}
Как и следовало ожидать, результат 1, 10, 12, 2, 22, 30
Затем давайте изменим versions.OrderBy(v => v))
на versions.OrderBy(v => int.Parse(v)))
. И все отлично работает: 1, 2, 10, 12, 22, 30
Я думаю, что ваша проблема в том, что в вашей строке есть нецифровые символы типа '.'. Какое исключение вы получаете?