LINQ到XML至少必须有一个对象实现IComparable
我想从XML文件中获取最高的属性“ID” 我的代码:LINQ到XML至少必须有一个对象实现IComparable,xml,linq,Xml,Linq,我想从XML文件中获取最高的属性“ID” 我的代码: var doc = XElement.Load("invoices.xml"); var q = (from f in doc.Element("ListOfInvoices").Elements("Invoice") orderby f.Attributes("ID") descending select f.Attribute("ID")).FirstOrDefault
var doc = XElement.Load("invoices.xml");
var q = (from f in doc.Element("ListOfInvoices").Elements("Invoice")
orderby f.Attributes("ID") descending
select f.Attribute("ID")).FirstOrDefault();
当在我的XML文件中是一个发票代码时,但当是例如2发票时,我有一个错误:
至少有一个对象必须实现IComparable。如果是数字对象,请尝试将
f.Attributes(“ID”)
转换为int
,如果是字母数字对象,请尝试将其转换为string
:
var q = (from f in doc.Element("ListOfInvoices").Elements("Invoice")
orderby (int)f.Attribute("ID") descending
select f.Attribute("ID")).FirstOrDefault();
您必须显式访问
XAttribute.Value
:
doc.Element("ListOfInvoices")
.Elements("Invoice")
.Select(f => f.Attribute("ID").Value)
.OrderByDecending(a => a).FirstOrDefault();
订单上有个打字错误。您编写了属性而不是属性 您需要使用Value属性来获取属性值:
var q = (
from f in doc.Element("ListOfInvoices").Elements("Invoice")
orderby f.Attribute("ID").Value descending
select f.Attribute("ID").Value
).FirstOrDefault();
不能将XmlAttributes列表强制转换为int。。不能将XmlElement强制转换为int。也不能将字符串强制转换为int。@Schiavini:这是XAttribute而不是XmlAttribute,是的,你可以!MSDN这么说,编译器接受它,为什么你不能?你是对的,你可以使用XAttribute。。然而,他的问题是f.Attributes()的拼写错误,它返回XAttribute[]。。。那又如何使你的权利,你不能投?