我有一个linq,按月分组价格完美无缺,除了我看不到没有数据的月份。我所期待的如果一个月没有数据价格应为0。
List<decimal> osman1 = osman.GroupBy(i => new
{
Field1 = i.Field<DateTime>("CreateDate").Month
})
.Select(group => group.Sum(i => Convert.ToDecimal(i["Price"])))
.ToList();
结果osman1是
{221,103,352}
我需要的是
{0,0,0,0,0,0,0,221,0,103,352,0}
答案 0 :(得分:3)
最简单的方法可能是进行群组加入:
var totalsByMonth = Enumerable.Range(1, 12)
.GroupJoin(osman,
month => month,
record => record.Field<DateTime>("CreateDate").Month,
(month, records) => records.Sum(r => r.Field<decimal>("Price")))
.ToList();
(我使用Field<decimal>
而不是Convert.ToDecimal
,因为我认为它通常更干净;当然,如果您需要,请更改它。)