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

How to sort xDocument node by name

我遇到了必须按节点名称对 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;

但结果保持不变

您需要将子节点替换为有序节点:

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