2012-06-29 81 views
1

我需要在xml中對節點進行排序。我有以下代碼成功地按字母順序排列。但是,儘管允許使用字符串,但大部分數據都是數字。我有一個IComparer設置,可以正確地對數據進行排序,因爲我希望它可以出現在別處。使用IComparer在xml中對/ orderby節點排序/ orderby

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。

回答

4

你是對的,你不能從查詢表達式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))); 
+0

謝謝!我試過的查詢非常接近,但關閉並不會削減它! – RememberME