Преобразуйте строки в числа в вашем предложении сортировки, например,
Dim MyQuery = From c In XDoc.Descendants() _
Where c.Attribute(Y) IsNot Nothing And c.Attribute(Str) IsNot Nothing _
Order By CInt(c.Attribute(Y)), CInt(c.Attribute(X)) _
Select Str = c.Attribute(Str)
Обратите внимание, что если какая-либо из строк не может быть преобразована в int
(или любой числовой тип, который вы решили использовать)тогда вы получите исключение.В этом случае вам придется сделать что-то более сложное, например, спроецировать вашу последовательность на новую последовательность с любыми строками, представляющими числовые значения, преобразованные в числовые значения, а остальное оставить без изменений, в результате сортировка будет выполнена буквенно-цифровой.