2012-01-31 67 views
1

我目前正在与该XML的工作(这是一个小的子集)分组:的LINQ to XML与和

<?xml version="1.0" encoding="UTF-8"?> 
<orders> 
    <order> 
     <customer><![CDATA[1035]]></customer> 
     <total><![CDATA[10]]></total> 
    </order> 
    <order> 
     <customer><![CDATA[1036]]></customer> 
     <total><![CDATA[5.6]]></total> 
    </order> 
    <order> 
     <customer><![CDATA[1035]]></customer> 
     <total><![CDATA[5.6]]></total> 
    </order> 
</orders> 

我试图找出是否有一种方法来组这个由客户和求和总。

当我通过分组循环我会:

customer 1035 with a total of 15.6 
customer 1036 with a total of 5.6 

回答

2

我先变换,然后组/总和:

var query = from element in doc.Descendants("order") 
      select new { Customer = (int) element.Element("customer"), 
         Total = (decimal) element.Element("total") } 
      into order 
      group order.Total by order.Customer into g 
      select new { Customer = g.Key, Total = g.Sum() }; 

foreach (var result in query) 
{ 
    Console.WriteLine("customer {0} with a total of {1}", 
         result.Customer, result.Total); 
} 

(你可以做到这一切的点标记为好,当然。)