如何使用XElement检索属性的总和?

时间:2016-06-09 08:30:16

标签: c# linq xelement

我一直在使用XElement存储有关文件的信息,我希望能够将所有文件长度相加以获得文件的总大小。

我一直希望答案是这样的......

xmlDir.Elements("File").Attributes("Length").Sum();

我认为答案可能使用lambda表达式,但我不知道如何构建它。

我找到的答案告诉我如何在XElement中对元素求和,但没有一个显示如何对属性的值求和。

<?xml version="1.0" encoding="utf-8"?>
<DirectoryDetails Path="F:\IndianSprings\Condensates" SerialNumber="10092693">
  <File Name="Start Menu\Programs\Games\Minesweeper.lnk" Length="1515" DateLastModified="2010-03-15T18:09:25.2325712-04:00" DateCreated="2010-08-16T05:11:39.171875-04:00" />
  <File Name="Start Menu\Programs\Games\Pinball.lnk" Length="885" DateLastModified="2010-03-15T18:09:25.2225568-04:00" DateCreated="2010-08-16T05:11:39.1875-04:00" />
  <File Name="Start Menu\Programs\Games\Solitaire.lnk" Length="1491" DateLastModified="2010-03-15T18:09:25.2325712-04:00" DateCreated="2010-08-16T05:11:39.21875-04:00" />
  <File Name="Start Menu\Programs\Games\Spider Solitaire.lnk" Length="1502" DateLastModified="2010-03-15T18:09:25.2425856-04:00" DateCreated="2010-08-16T05:11:39.515625-04:00" />
</DirectoryDetails>

2 个答案:

答案 0 :(得分:2)

你几乎得到了它

var result = xmlDir.Elements("File").Attributes("Length").Sum(a=>(int)a);

a是XAttribute,XAttribute支持显式转换为int(int)a

答案 1 :(得分:1)

你可以试试这个 var v = xmlDir.Elements(“File”)。Attributes(“Length”)。Sum(x =&gt;(int)x);