我需要做到以下几点,我有一个List
与包含2个整数ID和计数如何在Linq中获得SUM?
现在我想做到以下几点LINQ查询类:
get the sum of the count for each id
但可以有与项目相同的ID,所以应该summerized如:
id=1, count=12
id=2, count=1
id=1, count=2
是前人的精力:
id=1 -> sum 14
id=2 -> sum 1
该怎么做?
我需要做到以下几点,我有一个List
与包含2个整数ID和计数如何在Linq中获得SUM?
现在我想做到以下几点LINQ查询类:
get the sum of the count for each id
但可以有与项目相同的ID,所以应该summerized如:
id=1, count=12
id=2, count=1
id=1, count=2
是前人的精力:
id=1 -> sum 14
id=2 -> sum 1
该怎么做?
var result = items.GroupBy(x => x.Id)
.Select(g => new { Id = g.Key, Sum = g.Sum(x => x.Count) });
我有什么做的,如果我不想使用新的,只是来概括然后拿回我有的东西 – gurehbgui 2013-04-27 10:41:12
你期待的结果是什么?类似于“{Item = {id = 1,count = 12},Sum = 14}'? – Caramiriel 2013-04-27 10:46:56
@Caramiriel是的,它看起来好像他想创建与原始元素相同类型的新项目,其计数设置为总计,如:var result = items.GroupBy(x => x.Id)。选择(g => new HisType {id = g.Key,count = g.Sum(x => x.Count)});' – 2013-04-27 12:09:18
试试吧,
.GroupBy(x => x.id)
.Select(n => n.Sum(m => m.count));
下面的程序...
struct Item {
public int Id;
public int Count;
}
class Program {
static void Main(string[] args) {
var items = new [] {
new Item { Id = 1, Count = 12 },
new Item { Id = 2, Count = 1 },
new Item { Id = 1, Count = 2 }
};
var results =
from item in items
group item by item.Id
into g
select new { Id = g.Key, Count = g.Sum(item => item.Count) };
foreach (var result in results) {
Console.Write(result.Id);
Console.Write("\t");
Console.WriteLine(result.Count);
}
}
}
。 ..打印:
个1 14
2 1
101 LINQ示例:http://code.msdn.microsoft.com/LINQ-Aggregate-Operators-c51b3869#CountConditional – 2013-04-27 10:35:39