use*_*420 4 c# linq lambda sum linq-group
我想知道如何按月对一些数据进行分组并对字段求和。例如,我有一个MyObjects(DateTimeField, AmountField). 我想按 分组DateTimeField,但不是整个日期,只是按月分组,然后AmountField对每个月求和。
我不知道为什么objectgrouped是空的?
IEnumerable<MyObject> objectList= GetMyObject();
var ObjectGrouped = objectList.GroupBy(l => l.ObjectDate.GetValueOrDefault().Month)
.Select(lg =>
new
{
CurrentMonth = lg.Key,
Total = lg.Sum(w => w.ObjectAmount)
});
ObjectDate ObjectAmount
1/1/2013 3.3
3/1/2013 6.9
13/2/2013 5
3/4/2013 3.6
13/4/2013 15.2
Run Code Online (Sandbox Code Playgroud)
我假设“月”是指“月和年”:
忽略空值:
var query = myList.Where(i => i.DateTimeField.HasValue)
.GroupBy(i => i.DateTimeField.Value.Month)
.Select(g => new {
Month=g.Key,
Total=g.Sum(i=>i.AmountField)
});
Run Code Online (Sandbox Code Playgroud)
将空值放在单独的存储桶中(“0”月):
var query = myList.GroupBy(i => i.DateTimeField.HasValue ? i.DateTimeField.Value.Month : 0)
.Select(g => new {
Month=g.Key,
Total=g.Sum(i=>i.AmountField)
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19023 次 |
| 最近记录: |