c#xml显示最高值

时间:2014-09-11 12:25:08

标签: c# xml linq

我完全没有想法,我的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;

有些东西不起作用。任何人都有一个想法,我不必将所有数据放在一个数组中,排序该数组并给出第一个元素(因为这是我唯一的想法,但似乎有点太多了)

2 个答案:

答案 0 :(得分:5)

int highestId = readme
    .Elements("customers")
    .Elements("customer")
    .Select(cust => Convert.ToInt32(cust.Element("customerid").Value.Substring(1))
    .Max();

答案 1 :(得分:0)

使用linq / xpath的组合

或更简洁

int id = readme.XPathSelectElements("/customers/customer/customerid").Max(cid => int.Parse(cid.Value.Substring(1)));