繁体   English   中英

使用 LINQ 从 XML 获取三个输入中的最大属性值

[英]Get max attribute value in three input from XML using LINQ

下面是示例 xml 文件代码。 我想使用 LINQ 获得 Max("Match") 值。

<?xml version="1.0" encoding="utf-8"?>
<Match>
  <DOBMatch>100</ DOBMatch >
  <DOBScore>0</ DOBScore >
  <IDScore>89</ IDScore >
</Match>

在匹配 object 中,我有三个值比较这三个属性( DOBMatch,DOBScore,IDScore )并获得最大值。

下面的代码得到一个值。

var info = document.Descendants("Match");
var finalInfo = info.Select(x => x.Element("DOBMatch ").Value).Max();

首先,您需要将值转换为int ,以便正确找到最大值。 其次,您需要获得所需的三个值:

var targetNames = new[] { "DOBMatch", "DOBScore", "IDScore" }.ToHashSet();
var info = document.Descendants("Match");
var finalInfo = info.SelectMany(d => d.Elements()
                                      .Where(d => targetNames.Contains(d.Name.ToString()))
                                      .Select(d => Int32.Parse(d.Value)))
                    .Max();

var finalInfo = info.Elements().Max(x => Convert.ToInt32(x.Value));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM