1

我需要对 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。

4

1 回答 1

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)));
于 2012-06-29T22:03:31.837 回答