使用LINQ从XML获取最大属性值 [英] Get max attribute value from XML using LINQ
本文介绍了使用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屋!
查看全文