c# – Linq按日期分组(月份)
发布时间:2020-12-16 01:54:16 所属栏目:百科 来源:网络整理
导读:我想知道如何按月对一些数据进行分组并总结一个字段. 例如,我有一个MyObjects列表(DateTimeField,AmountField). 我想按DateTimeField分组,但不是整个日期,只是按月分组,然后将每月的AmountField相加. 我不知道为什么objectgrouped是null? IEnumerableMyObje
我想知道如何按月对一些数据进行分组并总结一个字段.
例如,我有一个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) }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |