繁体   English   中英

如何从 C# 中的 xml 元素中获取最大值?

[英]How to get highest value from xml element in C#?

我需要从<WBWellIdSegment>获得最高的<WbDrillPermitNo>即 692753。我使用 linq 编写了如下代码,但它同时返回了<WBWellIdSegment>作为结果。 请帮我获得最大值。

 XDocument xml1 = XDocument.Load(File.FullName);

     List<XElement> segLists = xml1.Descendants("WBWellIdSegmentList").Descendants("WBWellIdSegment").Elements("WbDrillPermitNo").ToList();
     
     var result = segLists.GroupBy(i => i.Elements("WbDrillPermitNo"),
                  (i, group) => group.Single(x => x.Element("WbDrillPermitNo").Value == group.Max(y => 
                  y.Element("WbDrillPermitNo").Value)));

xml 文件

 <WBWellIdSegmentList>
          <WBWellIdSegment>     
            <WbOilLseNumber>07337</WbOilLseNumber>
            <WbOilWellNumber>1486W</WbOilWellNumber>
            <WbDrillPermitNo>370746</WbDrillPermitNo>       
          </WBWellIdSegment>
          <WBWellIdSegment>
            <WbOilLseNumber>07337</WbOilLseNumber>
            <WbOilWellNumber>1486</WbOilWellNumber>
            <WbDrillPermitNo>692753</WbDrillPermitNo>        
          </WBWellIdSegment>
    </WBWellIdSegmentList>

返回最大值(假设该值为整数类型)

wellBore.Descendants("WbDrillPermitNo").Select(e => int.Parse(e.Value)).Max();

要从 <WbDrillPermitNo> 返回具有最大值的元素<WBWellIdSegment> <WbDrillPermitNo>您可以使用Aggregate方法

var segmentWithMaxNumber = wellBore.Descendants("WBWellIdSegment")
   .Select(e => (Element: e, Number: int.Parse(e.Element("WbDrillPermitNo").Value)))
   .Aggregate((max, e) => e.Number > max.Number ? e : max, max => max.Element);

暂无
暂无

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

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