linq groupby月份并将任何缺失的月份添加到分组数据中

Div*_*Dan 2 c# linq

我创建了一个似乎正常工作的linq语句.我可能或可能没有正确地写它,但它返回我的预期结果.

     var grouped = RewardTransctions.GroupBy(t => new
        {
            t.PurchaseDate.Value.Month
        }).Select(g => new TransactionDetail()
        {
            Month =
                g.Where(w=>w.EntryType==1).Select(
                    (n =>
                     n.PurchaseDate.Value.Month))
                .First(),
            TransactionAmount = g.Count()
        });
Run Code Online (Sandbox Code Playgroud)

现在结果返回按月分组的5个值.是否可以向TransactionAmount = 0添加其他7个缺失的月份?

我疯狂的原因是我试图将这些值绑定到图表并使我的x轴基于月份.目前它只显示了5个月的记录.如果我的数据在一个月内没有返回任何值,我就会想要添加0值.

有什么建议?

Eni*_*ity 5

如果你使用它很简单.ToLookup(...).

var lookup =
    (from w in RewardTransctions
     where w.EntryType == 1
     select w).ToLookup(w => w.PurchaseDate.Value.Month);

var grouped =
    from m in Enumerable.Range(1, 12)
    select new TransactionDetail()
    {
        Month = m,
        TransactionAmount = lookup[m].Count(),
    };
Run Code Online (Sandbox Code Playgroud)

几个简单的LINQ查询怎么样?