我有一些看起来像这样的XML:
<root>
<item>Banana</item>
<item>Apple</item>
<item>Cherry</item>
</root>
这不是我拥有的实际数据,但它可以达到目的。我想要做的是使用Linq to SQL重新排序XML,以便子节点按字母顺序排列,例如。
<root>
<item>Apple</item>
<item>Banana</item>
<item>Cherry</item>
</root>
我希望能够在原始XDocument上调用ToString()
并让它返回第二组XML,如上所示。有一个简单的方法吗?我试过搜索,但没有运气。
答案 0 :(得分:2)
也许:
var reordered = new XElement(
"root",
xdoc.Root.Elements("item")
.OrderBy(x => x.Value)
.Select(x => new XElement("item", x.Value)));
或稍微灵活一点(虽然只支持1个嵌套级别):
var reordered = new XElement(
xdoc.Root.Name,
xdoc.Root.Elements()
.OrderBy(x => x.Value)
.Select(x => new XElement(x.Name, x.Value)));