我希望得到基于Category
总计的以下内容
<?xml version="1.0" encoding="utf-8" ?>
- <Data>
- <Products>
<Product ProductId="1001" ProductName="p1" category="A1"
ProductPrice="123.45" />
<Product ProductId="1002" ProductName="p2" category="B1"
ProductPrice="100.45" />
<Product ProductId="1003" ProductName="p3" category="A1"
ProductPrice="223.45" />
<Product ProductId="1004" ProductName="p4" category="B1"
ProductPrice="200.45" />
</Products>
....
在下面实现它需要什么修改?(没有返回 我的查询)
XDocument doc = XDocument.Load("Product.xml");
var sum = from p in doc.Descendants("Product")
group p by p.Attribute("Category")
into g
select new { category = g.Key,
total = g.Sum(p =>(double)p.Attribute("ProductPrice")) };
答案 0 :(得分:3)
您的示例数据显示“类别”属性,但您在查询中使用“类别”。
看起来查询应该除此之外几乎可以工作 - 尽管我再次强烈敦促您使用decimal
而不是double
来代价。
var sum = from p in doc.Descendants("Product")
group p by p.Attribute("category").Value
into g
select new { category = g.Key,
total = g.Sum(p => (decimal) p.Attribute("ProductPrice"))
};