使用LINQ从XML获取最大属性值 [英] Get max attribute value from XML using LINQ

查看:67
本文介绍了使用LINQ从XML获取最大属性值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下XML文件.我想使用LINQ来获取Max("NR").谁能帮我做到这一点?我知道如何对节点执行此操作,但是属性使我感到困惑……:S

I have the following XML file. I want to get Max("NR") using LINQ. Could anyone help me to do this? I know how to do this for nodes, but attributes made me confused... :S

<?xml version="1.0" encoding="utf-8"?>
<SMPyramid LayerName="qwe" LayerPath="D:\#PYRAMID\qwe" Extension=".png" Meters="100000" RasterSize="4000">
  <Level NR="0" RasterXSize="512" RasterYSize="512" LastTileXSize="416" LastTileYSize="416" MinX="400000" MaxX="500000" MinY="1200000" MaxY="1300000" ScaleFactor="25" TilesCountX="8" TilesCountY="8" />
  <Level NR="1" RasterXSize="512" RasterYSize="512" LastTileXSize="323" LastTileYSize="323" MinX="400000" MaxX="499980.9024" MinY="1200019.0976" MaxY="1300000" ScaleFactor="34.679466666666663" TilesCountX="6" TilesCountY="6" />
  <Level NR="2" RasterXSize="512" RasterYSize="512" LastTileXSize="414" LastTileYSize="414" MinX="400000" MaxX="499738.14613333333" MinY="1200261.8538666666" MaxY="1300000" ScaleFactor="69.358933333333326" TilesCountX="3" TilesCountY="3" />
  <Level NR="3" RasterXSize="512" RasterYSize="512" LastTileXSize="206" LastTileYSize="206" MinX="400000" MaxX="499599.42826666665" MinY="1200400.5717333332" MaxY="1300000" ScaleFactor="138.71786666666665" TilesCountX="2" TilesCountY="2" />
  <Level NR="4" RasterXSize="358" RasterYSize="358" LastTileXSize="358" LastTileYSize="358" MinX="400000" MaxX="499321.99253333331" MinY="1200678.0074666666" MaxY="1300000" ScaleFactor="277.4357333333333" TilesCountX="1" TilesCountY="1" />
</SMPyramid>

推荐答案

您对待属性的方式与对待节点完全一样.例如:

You treat attributes exactly the same way you would as nodes. So for example:

int maxNr = doc.Descendants("Level")
               .Max(x => (int) x.Attribute("NR"));

请注意,这将为您提供 of NR的最大值,而不是包含该数字的Level元素.为此,您需要使用OrderByDescending(...).First()或使用 MoreLINQ 中的MaxBy.

Note that that will give you the maximum value of NR, not the Level element which contains that number. For that, you'd want to either use OrderByDescending(...).First() or use MaxBy from MoreLINQ.

这篇关于使用LINQ从XML获取最大属性值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆