在LINQ中查找总和

时间:2009-11-11 07:15:05

标签: c# linq

来自XML文档

<?xml version="1.0" encoding="utf-8" ?> 
 <Data>
   <Products>
      <Product ProductId="1001" ProductName="ProductA" ProductPrice="123.45" /> 
      <Product ProductId="1002" ProductName="ProductB" ProductPrice="100.45" /> 
  </Products>
  ....

如何使用“Sum”查找ProductPrice?

的总和

当我使用

XDocument doc = XDocument.Load("Product.xml");

var sum =
          from tot in (int)doc.Descendants("Product").
                       Attributes("ProductPrice").Sum()
                       select tot;

我收到错误:“无法将类型system.xml.linq.xmlattribute转换为int”

1 个答案:

答案 0 :(得分:9)

我不确定你为什么在这里使用查询表达式,但我认为你想要:

int sum = doc.Descendants("Product")
             .Sum(x => (int) x.Attribute("ProductPrice"));

重要的是,它使用overload of Sum,它允许您指定一个函数从源元素到整数值。