我完全没有想法,我的C#/ LINQ / XML技能仍然很弱。也许有人可以帮我完成一个相对简单的任务,我不想写一个完整的程序:
我需要在XML数据库中获得看起来像这样的最高客户ID:
<xml>
<customers>
<customer>
<customerid>a00001</customerid>
<name>this</name>
</customer>
<customer>
<customerid>a00031</customerid>
<name>that</name>
</customer>
依旧......
到目前为止我尝试过的是我用于其他linq / xml的代码混合实际工作,并结合我在这里找到的东西:
var readme = XElement.Load("someXML");
int tempHigh;
var highIDs =
(from va in readme.Elements("customers").Elements("customer")
where Convert.ToInt32(va.Element("customerid").Value.Substring(2, 5)) > tempHigh
select Convert.ToInt32(va.Element("customerid").Value.Substring(2,5)));
tempHigh = Convert.ToInt32(highIDs.Element("customerid").Value);
return tempHigh;
有些东西不起作用。任何人都有一个想法,我不必将所有数据放在一个数组中,排序该数组并给出第一个元素(因为这是我唯一的想法,但似乎有点太多了)
答案 0 :(得分:5)
int highestId = readme
.Elements("customers")
.Elements("customer")
.Select(cust => Convert.ToInt32(cust.Element("customerid").Value.Substring(1))
.Max();
答案 1 :(得分:0)
或更简洁
int id = readme.XPathSelectElements("/customers/customer/customerid").Max(cid => int.Parse(cid.Value.Substring(1)));