Как насчет:
var orderedMonths = months.Where(x => x >= 7)
.OrderBy(x => x)
.Concat(months.Where(x => x < 7));
Обратите внимание, что это будет означать, что элементы «остальной части массива» будут в порядке появления, а не в порядке возрастания чисел. Если бы вы имели в виду последнее (т.е. отсортировать оба «сегмента» численно), я бы сделал:
var orderedMonths = months.OrderBy(x => x < 7) // false comes before true
.ThenBy(x => x);
С другой стороны, если вы хотите отсортировать оба сегмента по порядку появления, я бы сделал:
var orderedMonths = months.GroupBy(x => x < 7)
.OrderBy(group => group)
.SelectMany(x => x);
(или)
var orderedMonths = months.Where(x => x >= 7)
.Concat(months.Where(x => x < 7));