Если я понимаю ваш вопрос, вы ищете решение проблемы, которую вы пытаетесь решить, используя Linq (кстати, последняя буква - Q, а не G - что, вероятно, вы не могли бы добавить тег).
Остальная часть вашего вопроса мне не совсем понятна. Я перечислил возможные решения, основанные на различных предположениях:
Я предполагаю, что ваш массив имеет тип string []. Пример:
string[] values = new [] { "708", "4012" };
Сортировка по алфавиту c порядок независимо от номера c порядок значений:
var result = values.OrderBy(value => value);
Чтобы отсортировать по числовому значению c, вы можете просто изменить делегат, используемый в предложении OrderBy, предполагая, что ваши значения достаточно малы:
var result = values.OrderBy(value => Convert.ToInt32(value));
Предположим, что ваши числа имеют произвольную длину, и вы хотите, чтобы значения в массиве были такими, какие они есть (без предваряющих нулей), и чтобы вы сортировали их в порядке целочисленных значений:
string[] values = new [] { "708", "4012" };
int maxLength = values.Max(value => value.Length);
string zerosPad = string
.Join(string.Empty, Enumerable.Repeat<string>("0", maxLength));
var resultEnumerable = values
.Select(value => new
{
ArrayValue = value,
SortValue = zerosPad.Substring(0, maxLength - value.Length) + value
}
)
.OrderBy(item => item.SortValue);
foreach(var result in resultEnumerable)
{
System.Console.WriteLine("{0}\t{1}", result.SortValue, result.ArrayValue);
}
Результат приведенного выше кода будет выглядеть вот так:
0708 708
4012 4012
Надеюсь, это поможет!