C# XML到LINQ-获取按另一个元素的值排序的节点值集合
我有以下XML,我只需要获取C# XML到LINQ-获取按另一个元素的值排序的节点值集合,c#,linq-to-xml,fluent,C#,Linq To Xml,Fluent,我有以下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
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>
我认为这将是使用LINQfluent语法的方法
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();
XDocument xResults=XDocument.Parse(responseXml);
List sortedRecordIds=xResults.substands(“Id”)
.OrderBy(d=>DateTime.Parse(d.Element(“DatePaid”).Value).Date)
.选择(d=>d.Value)
.ToList();
但这引发了一个例外。我使用排序有误吗?如果您可以使用XMLDocument而不是XDocument,那么您可以这样做 您的XML(我认为您有一个根元素):
47398
09/01/2019 10:44:08
63523
09/07/2019 10:04:02
94902
09/05/2019 10:32:09
根据需要获取的代码:
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml( myXmlString );
List<string> list = xmlDocument.ChildNodes[ 0 ]
.OfType<XmlNode>()
.OrderBy( payment => DateTime.Parse( payment.ChildNodes[ 1 ].InnerText ) )
.Select( payment => payment.ChildNodes[ 0 ].InnerText )
.ToList();
XmlDocument XmlDocument=new XmlDocument();
LoadXml(myXmlString);
List List=xmlDocument.ChildNodes[0]
第()类
.OrderBy(payment=>DateTime.Parse(payment.ChildNodes[1].InnerText))
.Select(payment=>payment.ChildNodes[0]。InnerText)
.ToList();
更新
更改代码以使其正常工作:
List<string> sortedRecordIds = xResults.Descendants("Payment")
.OrderBy( d => DateTime.Parse( d.Element( "DatePaid" ).Value ).Date )
.Select( d => d.Element("Id").Value )
.ToList();
List sortedRecordIds=xResults.substands(“付款”)
.OrderBy(d=>DateTime.Parse(d.Element(“DatePaid”).Value).Date)
.Select(d=>d.Element(“Id”).Value)
.ToList();
如果您可以使用XMLDocument而不是XDocument,您可以这样实现
您的XML(我认为您有一个根元素):
47398
09/01/2019 10:44:08
63523
09/07/2019 10:04:02
94902
09/05/2019 10:32:09
根据需要获取的代码:
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml( myXmlString );
List<string> list = xmlDocument.ChildNodes[ 0 ]
.OfType<XmlNode>()
.OrderBy( payment => DateTime.Parse( payment.ChildNodes[ 1 ].InnerText ) )
.Select( payment => payment.ChildNodes[ 0 ].InnerText )
.ToList();
XmlDocument XmlDocument=new XmlDocument();
LoadXml(myXmlString);
List List=xmlDocument.ChildNodes[0]
第()类
.OrderBy(payment=>DateTime.Parse(payment.ChildNodes[1].InnerText))
.Select(payment=>payment.ChildNodes[0]。InnerText)
.ToList();
更新
更改代码以使其正常工作:
List<string> sortedRecordIds = xResults.Descendants("Payment")
.OrderBy( d => DateTime.Parse( d.Element( "DatePaid" ).Value ).Date )
.Select( d => d.Element("Id").Value )
.ToList();
List sortedRecordIds=xResults.substands(“付款”)
.OrderBy(d=>DateTime.Parse(d.Element(“DatePaid”).Value).Date)
.Select(d=>d.Element(“Id”).Value)
.ToList();
我想出来了
XDocument xDoc = XDocument.Parse(responseXml);
List<string> sortedRecordIds = xDoc.Descendants("Payment")
.OrderBy(d => d.Element("DatePaid").Value)
.Select(d => d.Element("Id").Value)
.ToList();
XDocument xDoc=XDocument.Parse(responseXml);
List sortedRecordIds=xDoc.后代(“付款”)
.OrderBy(d=>d.Element(“DatePayed”).Value)
.Select(d=>d.Element(“Id”).Value)
.ToList();
我的问题是我应该使用Payment
而不是Id
。当从Id
节点开始时,没有可以排序的DatePaid
元素。我找到了答案
XDocument xDoc = XDocument.Parse(responseXml);
List<string> sortedRecordIds = xDoc.Descendants("Payment")
.OrderBy(d => d.Element("DatePaid").Value)
.Select(d => d.Element("Id").Value)
.ToList();
XDocument xDoc=XDocument.Parse(responseXml);
List sortedRecordIds=xDoc.后代(“付款”)
.OrderBy(d=>d.Element(“DatePayed”).Value)
.Select(d=>d.Element(“Id”).Value)
.ToList();
我的问题是我应该使用
Payment
而不是Id
。从Id
节点开始时,没有要排序的DatePaid
元素。什么样的异常?请提供。对象引用未设置为对象的实例
-通常在LINQ语句出现问题时发生此错误,因为您使用“Id”作为数据中心。切换到“付款”,它应该可以正常工作。我已经更新了我的答案。什么样的例外?请提供。对象引用未设置为对象的实例
-通常在LINQ语句出现问题时发生此错误,因为您使用“Id”作为数据中心。切换到“付款”,它应该可以正常工作。我已经更新了我的答案。有什么原因不能在XDocument
中完成吗?我想找出在尝试使用OrderBy
时出现错误的原因。是否存在无法在XDocument
中执行此操作的原因?我想找出在尝试使用OrderBy
时出错的原因。