如何按名称对xDocument节点进行排序

时间:2017-02-16 14:14:54

标签: c# linq linq-to-xml

我遇到了一个问题,我必须按节点名称对XDocument进行排序。实施例

<contact>
    <email></email>
    <address></address>
    <name></name> 
</contact>

我想要

<contact>
    <address></address>
    <email></email>
    <name></name>
</contact>

感谢您的帮助。

我试过用

var ab = xdoc.Descendants("contact");
            var s = from abs in ab
                    orderby abs.Name.ToString() descending
                    select abs;

但结果保持不变

1 个答案:

答案 0 :(得分:2)

您需要使用有序节点替换子节点:

            XDocument doc = XDocument.Parse(@"<contact>
    <email></email>
    <address></address>
    <name></name> 
</contact>");
            doc.Root.ReplaceNodes(doc.Root.Elements().OrderBy(el => el.Name.LocalName));