Заказ не работает более 10 штук - PullRequest
2 голосов
/ 24 февраля 2009

Я пытаюсь отсортировать xml, используя запросы linq, используя следующий код

Dim SortedFields = From field In feedXML.Descendants("fields")
Dim sFieldList = From field In SortedFields.Descendants("field") Order By field.@position

xml показан ниже, но проблема в том, что он упорядочивает его в следующем порядке. 1,10,11,12,13,14 ... 19,2,3,4,5,6,7 вместо 1,2,3,4,5 .... 10,11,12, ..... 19.

Может ли кто-нибудь помочь мне отсортировать его в правильном порядке?

<fields>
    <field position="'6'" tablename="Students" headername="6" fieldreference="ClientField1" orderbydirection="ASC" displaycolumn="T" />
    <field position="'7'" tablename="Students" headername="7" fieldreference="ClientField2" orderbydirection="ASC" displaycolumn="T" />
    <field position="'8'" tablename="Students" headername="8" fieldreference="ClientField3" orderbydirection="ASC" displaycolumn="T" />
    <field position="'9'" tablename="Students" headername="9" fieldreference="ClientField4" orderbydirection="ASC" displaycolumn="T" />
    <field position="'10'" tablename="Students" headername="10" fieldreference="ClientField5" orderbydirection="ASC" displaycolumn="T" />
    <field position="'1'" tablename="Students" headername="1" fieldreference="ClientField6" orderbydirection="ASC" displaycolumn="T" />
    <field position="'2'" tablename="Students" headername="2" fieldreference="ClientField7" orderbydirection="ASC" displaycolumn="T" />
    <field position="'3'" tablename="Students" headername="3" fieldreference="ClientField8" orderbydirection="ASC" displaycolumn="T" />
    <field position="'4'" tablename="Students" headername="4" fieldreference="ClientField9" orderbydirection="ASC" displaycolumn="T" />
    <field position="'5'" tablename="Students" headername="5" fieldreference="ClientField10" orderbydirection="ASC" displaycolumn="T" />
    <field position="'11'" tablename="Students" headername="11" fieldreference="ClientField11" orderbydirection="ASC" displaycolumn="T" />
    <field position="'12'" tablename="Students" headername="12" fieldreference="ClientField12" orderbydirection="ASC" displaycolumn="T" />
    <field position="'13'" tablename="Students" headername="13" fieldreference="ClientField13" orderbydirection="ASC" displaycolumn="T" />
    <field position="'14'" tablename="Students" headername="14" fieldreference="ClientField14" orderbydirection="ASC" displaycolumn="T" />
    <field position="'15'" tablename="Students" headername="15" fieldreference="ClientField15" orderbydirection="ASC" displaycolumn="T" />
    <field position="'16'" tablename="Students" headername="16" fieldreference="ClientField16" orderbydirection="ASC" displaycolumn="T" />
    <field position="'17'" tablename="Students" headername="17" fieldreference="ClientField17" orderbydirection="ASC" displaycolumn="T" />
    <field position="'18'" tablename="Students" headername="18" fieldreference="ClientField18" orderbydirection="ASC" displaycolumn="T" />
    <field position="'19'" tablename="Students" headername="19" fieldreference="ClientField19" orderbydirection="ASC" displaycolumn="T" />
</fields>

Ответы [ 2 ]

4 голосов
/ 24 февраля 2009

Как отмечает Пол Томблин, это алфавитный порядок. Если позиция всегда будет числом, вы можете преобразовать его в целое число, используя (int?)

Dim SortedFields = From field In feedXML.Descendants("fields")
                            Dim sFieldList = From field In SortedFields.Descendants("field") Order By (int?)field.@position
3 голосов
/ 24 февраля 2009

Это сортировка в алфавитном порядке. Вам необходимо преобразовать атрибут position в целое число в предложении Order By:

Dim SortedFields = From field In feedXML.Descendants("fields")
Dim sFieldList = From field In SortedFields.Descendants("field") _
    Order By CType(field.@position, Integer)

(Извините, если есть лучшее преобразование, доступное ... это код, предложенный на странице оператора преобразования XAttribute )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...