如何根据 XDocument 的子节点对 XDocument 父节点进行排序?

问题描述 投票:0回答:2

在 C# 中,我尝试使用

XDocument
OrderByDescending
进行排序。目标是读取包含日期/时间戳的子节点之一并对父节点重新排序。

我从保存的文件中加载 XML,如下所示:

XDocument Doc = new XDocument();
Doc= XDocument.Load(filename);

这是我的 XML 示例:

<KS>
  <Team>   
    <TeamName>Knights</TeamName>
    <TeamColor>blue</TeamColor>
    <LastAccessed>5/9/2013 2:34:22 PM</LastAccessed>
  </Team>
  <Team>
    <TeamName>Rangers</TeamName>
    <TeamColor>red</TeamColor>
    <LastAccessed>5/9/2013 3:49:06 PM</LastAccessed>
  </Team>
  <Team>
    <TeamName>Eagles</TeamName>
    <TeamColor>green</TeamColor>    
    <LastAccessed>5/9/2013 3:50:18 PM</LastAccessed>
  </Team>
</KS>

我想根据子元素

<Team>
降序重新排序
<LastAccessed>

我尝试了以下方法,但没有成功:

var results = Doc.Root.Descendants("Team").OrderByDescending(p => p.Element("LastAccessed"));

XDocument node = new XDocument(Doc.Descendants("KS").OrderByDescending(x => x.Element("Team").Element("LastAccessed").Value.Trim()));

有什么建议可以根据子节点中存储的值对 XML 父节点进行排序吗?

c# xml linq linq-to-xml
2个回答
6
投票

您应该收到一条错误消息:

请始终在您的问题中包含这些错误。

将结果行更改为下面的内容即可。


0
投票
var results = Doc.Root.Descendants("Team").OrderByDescending(p =>    (DateTime)p.Element("LastAccessed"));
© www.soinside.com 2019 - 2024. All rights reserved.