Сортировать / упорядочивать узлы в xml с помощью IComparer

Мне нужно отсортировать узлы в xml. У меня есть следующий код, который успешно упорядочивает их по алфавиту. Однако большая часть данных является числовой, хотя строки разрешены. У меня есть настроенный IComparer, который работает для правильной сортировки данных, как я хочу, чтобы они отображались в другом месте.

System.Xml.Linq.XDocument output = new System.Xml.Linq.XDocument(
                    new System.Xml.Linq.XElement("xml",
                from node in input.Root.Elements("training")
                orderby node.Attribute("order").Value
                select node));

Я нашел, как использовать IComparer в вызове метода, .OrderBy(x => x, new CustomComparer()) Но я не понял, как заставить его работать с xml. Из того, что я читал в Интернете, не похоже, что я могу вызвать IComparer из синтаксиса запроса.


person RememberME    schedule 29.06.2012    source источник


Ответы (1)


Вы правы, вы не можете использовать эту перегрузку из предложения orderby выражения запроса. К счастью, ваш запрос довольно прост, поэтому вы можете просто использовать:

// Have a using directive for System.Xml.Linq - it'll make everything simpler!
XDocument output = new XDocument(
    new XElement("xml",
        input.Root
             .Elements("training")
             .OrderBy(node => node.Attribute("order)".Value, comparer)));
person Jon Skeet    schedule 29.06.2012
comment
Спасибо! Запрос, который я пробовал, был очень близок, но закрытие не помогло! - person RememberME; 30.06.2012