gpt4 book ai didi

c# - 如何根据子节点对 XDocument 父节点进行排序?

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:11 28 4
gpt4 key购买 nike

在 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 父节点进行排序吗?

最佳答案

你应该得到一个错误说:

At least one object must implement IComparable.

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

您需要提供支持 IComparableTeam 元素的子元素界面。您需要获取 .Elements 的值而不是 XElement给你。

将您的结果行更改为以下内容,它将起作用。

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

关于c# - 如何根据子节点对 XDocument 父节点进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552057/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com