我需要在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));
我已经找到了如何在方法调用.OrderBy(x => x, new CustomComparer())
中使用IComparer但是,我还没弄明白如何使用xml。从我在网上看到的,看起来我不能从查询语法中调用IComparer。
答案 0 :(得分: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)));