按年份分组,然后按月分组
我需要一些LINQ-2-SQL的帮助,以便按一年和一个月分组一些博客文章。
基本上,我有一系列具有以下属性的博客文章
- ID
- 标题
- 日期
我想能够遍历每年,然后遍历那一年的每个月,最后,遍历那个月内的每篇博文。 就像是
- 2011
- 四月(显示post数量)
- 随机发布1
- 随机发布2
- 五月(显示post数量)
- 随机发布2
- 四月(显示post数量)
等等…
有没有办法使用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 };