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

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

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

  • ID
  • 标题
  • 日期

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

  • 2011
    • 四月(显示post数量)
      • 随机发布1
      • 随机发布2
    • 五月(显示post数量)
      • 随机发布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() }); 

我实际上没有测试过这个,但它看起来像一个开始,通过查看这篇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 } }; 

查看GroupBy - Nested标题下。

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

 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 };