use*_*244 3 c# xml linq linq-to-xml
在c#中,我试图使用OrderByDesending对XDocument进行排序.目标是读取一个包含日期\时间戳的子节点,并重新排序父节点.
我从保存的文件中加载XML,如下所示:
XDocument Doc = new XDocument();
Doc= XDocument.Load(filename);
Run Code Online (Sandbox Code Playgroud)
这是我的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>
Run Code Online (Sandbox Code Playgroud)
我想根据子元素重新排序降序
我没有运气就试过以下
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()));
Run Code Online (Sandbox Code Playgroud)
有人建议如何根据存储在子节点中的值对XML父节点进行排序?
你应该得到一个错误说:
至少有一个对象必须实现IComparable.
请始终在您的问题中包含这些错误.
您需要提供Team支持IComparable接口的元素的子代.你需要得到的价值,而不是XElement说.Elements给你.
将结果行更改为以下内容,它将起作用.
var results = Doc.Descendants("Team").OrderByDescending(p => DateTime.Parse(p.Element("LastAccessed").Value));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2523 次 |
| 最近记录: |