【问题标题】:How to sort xDocument node by name [duplicate]如何按名称对xDocument节点进行排序[重复]
【发布时间】:2017-02-16 14:14:54
【问题描述】:

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

但结果保持不变

【问题讨论】:

  • 在解决这个任务的过程中是什么阻止了你?见How to Ask
  • 我查看了很多 stackoverflow 页面,但没有找到正确的答案
  • 有多个联系人?
  • 不,只有一个联系人
  • 是的,“dtb”的回答对我有帮助。 'Martin Honnen' 也给出了正确答案

标签: c# linq linq-to-xml


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多