linq rimane la risposta al tuo problema :)
scritto con la linq fluent interface:
var records = new List<Tuple<string, int>>
{
Tuple.Create("r1", 10), Tuple.Create("r1", 5),
Tuple.Create("r2", 7), Tuple.Create("r2", 3), Tuple.Create("r2", 5),
Tuple.Create("r3", 6), Tuple.Create("r3", 6), Tuple.Create("r3", 6),
};
var results = records.GroupBy(t => t.Item1).Select(t => new
{
Item1 = t.Key,
SumItem2 = t.Sum(x => x.Item2)
});
foreach (var result in results)
{
Console.WriteLine("{0} = {1}", result.Item1, result.SumItem2);
}
e scritto in linq expression:
var records = new List<Tuple<string, int>>
{
Tuple.Create("r1", 10), Tuple.Create("r1", 5),
Tuple.Create("r2", 7), Tuple.Create("r2", 3), Tuple.Create("r2", 5),
Tuple.Create("r3", 6), Tuple.Create("r3", 6), Tuple.Create("r3", 6),
};
var results2 = from record in records
group record by record.Item1 into groupedRecords
select new
{
Item1 = groupedRecords.Key,
SumItem2 = groupedRecords.Sum(r => r.Item2)
};
foreach (var result in results2)
{
Console.WriteLine("{0} = {1}", result.Item1, result.SumItem2);
}
ciao
-------------------------------------------------------
Michael Denny
Lead Software Developer & Solutions Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com