XML到LINQ-获取由另一个元素的值排序的节点值集合

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

我有以下XML,我只需要获取Id节点的值,但是我确实需要按DatePaid节点的顺序来获取它们

<Payment>
    <Id>47398</Id>
    <DatePaid>09/01/2019 10:44:08</DatePaid>
</Payment>
<Payment>
    <Id>63523</Id>
    <DatePaid>09/07/2019 10:04:02</DatePaid>
</Payment>
<Payment>
    <Id>94902</Id>
    <DatePaid>09/05/2019 10:32:09</DatePaid>
</Payment>

所以结果列表将按此顺序排列

47398
94902
63523

我以为这将是使用LINQ流利语法的方法

XDocument xResults = XDocument.Parse(responseXml);
List<string> sortedRecordIds = xResults.Descendants("Id")
                                .OrderBy(d => DateTime.Parse(d.Element("DatePaid").Value).Date)
                                .Select(d => d.Value)
                                .ToList();

但是这引发了异常。我使用的排序不正确吗?

c# linq-to-xml fluent
1个回答
0
投票

如果可以使用XDocument代理的XMLDocument,则可以这样实现。

您的XML(我认为您有一个根元素):

© www.soinside.com 2019 - 2024. All rights reserved.