Étant donné le code XML ci-dessous, je dois regrouper par InputItem et additionner les coûts pour toutes les années. Ainsi, les résultats devraient être:Regroupement et sommation dans LINQ to XML
- Contrats de recherche, 7000
- contrats techniques, 5000
- Hospitality, 2000
Voici le XML:
<Inputs>
<Inputs_Table_Row>
<InputItem>Research Contracts</InputItem>
<TotalYear1>1000</TotalYear1>
<TotalYear2>2000</TotalYear2>
</Inputs_Table_Row>
<Inputs_Table_Row>
<InputItem>Research Contracts</InputItem>
<TotalYear1>2000</TotalYear1>
<TotalYear2>2000</TotalYear2>
</Inputs_Table_Row>
<Inputs_Table_Row>
<InputItem>Technical Contracts</InputItem>
<TotalYear1>1000</TotalYear1>
<TotalYear2>2000</TotalYear2>
</Inputs_Table_Row>
<Inputs_Table_Row>
<InputItem>Technical Contracts</InputItem>
<TotalYear1>1000</TotalYear1>
<TotalYear2>1000</TotalYear2>
</Inputs_Table_Row>
<Inputs_Table_Row>
<InputItem>Hospitality</InputItem>
<TotalYear1>1000</TotalYear1>
<TotalYear2>1000</TotalYear2>
</Inputs_Table_Row>
</Inputs>
Voici ma tentative simplement pour regrouper jusqu'à présent, mais je n'ai pas eu de succès:
XDocument doc = XDocument.Load(@"c:\temp\CrpTotalsSimple.xml");
var query = from c in doc.Descendants("Inputs_Table_Row")
group new
{
Item = (string)c.Element("InputItem")
}
by c.Element("InputItem")
into groupedData
select new
{
ItemName = groupedData.Key.Value
};
foreach (var item in query)
Console.WriteLine(String.Format("Item: {0}", item.ItemName));
Comment puis-je résoudre ce problème?
BTW, je suis l'aide de cet article: http://blog.blocks4.net/post/2007/08/Querying-XML-documents-with-LINQ-to-XML .aspx – Graeme