按年份分组,然后按月分组自己的收藏集

时间:2018-07-21 03:20:21

标签: c# linq group-by

我有这个LINQ

var summary =
    from b in books
    group b by b.DateAdded.Value.Year.ToString() into newgroup
        from newgrour2 in
        (
            from b in newgroup
            group b by new
            {
                month = b.DateAdded.Value.ToString("MMMM")
            }
        )
        group new Monthly
        {
            Month = newgrour2.Key.month,
            Count = newgrour2.Count()
        } by new
        {
            Year = newgroup.Key.ToString(),
            Count = newgroup.Count()
        };

可以通过以下方式获取

foreach (var year in Summary)
{
    var y = year.Key.Year;
    var cc = year.Key.Count;
    foreach (var month in year)
    {
        var m = month.Month;
        var c = month.Count;
    }
}

输出将为

2018 - 5 in total
    May - 3 items
    June - 1 item
    July - 1 item
2017 - 4 in total
    February - 4 items

我的问题是我不希望这部分是匿名的

new { Year = newgroup.Key.ToString(), Count = newgroup.Count() };

但是如果我将其替换为

new Yearly { Year = newgroup.Key.ToString(), Count = newgroup.Count() };

它并没有真正按年份分组;它只会进入一个列表。

我如何进行相同的输出但不匿名?

如果我使用匿名类型执行此操作, summary包含2个项目-2018年和2017年正确 year现在将包含其自己的月份 但是,如果我使用Yearly执行此操作,则summary会将所有项目都包含在一个列表中。没有子项。

0 个答案:

没有答案