按年份分组,然后按月分组

Mar*_*rko 8 c# linq

我需要一些LINQ-2-SQL的帮助,以便按一年和一个月分组一些博客文章.

基本上,我有一系列具有以下属性的博客文章

  • ID
  • 标题
  • 日期

我想能够遍历每年,然后遍历那一年的每个月,最后,遍历那个月内的每篇博文.就像是

  • 2011
    • 四月(显示帖子数量)
      • 随机发布1
      • 随机发布2
    • 五月(显示帖子数量)
      • 随机发布2

等等...

有没有办法使用group by子句使用单个LINQ查询执行此操作?

据我所知

var groupedBlogPosts = (from p in blogPostsFiltered
                group p by new { month = p.Date.Month, year = p.Date.Year } into d
                select new { postDate = string.Format("{0}/{1}", d.Key.month, d.Key.year), postCount = d.Count() });
Run Code Online (Sandbox Code Playgroud)

Bin*_*x1n 10

我实际上没有测试过这个,但它看起来像一个开始,通过查看这篇msdn文章写道:

var groupedBlogPosts =
                from p in blogPostsFiltered
                group p by p.Date.Year into yg
                select
                    new
                    {
                        Year = yg.Key,
                        MonthGroups =
                            from o in yg
                            group o by o.Date.Month into mg
                            select new { Month = mg.Key, Posts = mg }
                    };
Run Code Online (Sandbox Code Playgroud)

看看GroupBy - Nested标题下面.


Jef*_*ado 5

如果您不想进行预测并将其保留为分组,则可以选择此选项.

var groupedBlogPosts =
    from post in blogPostsFiltered
    group post by new { post.Date.Year, post.Date.Month } into grouped
    group grouped by new { grouped.Key.Year };
Run Code Online (Sandbox Code Playgroud)