我想知道如何按月对一些数据进行分组并总结一个字段.
例如,我有一个MyObjects列表(DateTimeField,AmountField).
我想按DateTimeField分组,但不是整个日期,只是按月分组,然后将每月的AmountField相加.
例如,我有一个MyObjects列表(DateTimeField,AmountField).
我想按DateTimeField分组,但不是整个日期,只是按月分组,然后将每月的AmountField相加.
我不知道为什么objectgrouped是null?
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
解决方法
我假设“月”表示“月份和年份”:
要忽略空值:
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) });
将空值放在一个单独的存储桶中(“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) });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。