Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ到XML至少必须有一个对象实现IComparable_Xml_Linq - Fatal编程技术网

LINQ到XML至少必须有一个对象实现IComparable

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

我想从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();
当在我的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[]。。。那又如何使你的权利,你不能投?