每月档案

时间:2010-12-30 08:45:41

标签: c# asp.net

说我有一个数据库,其中包含过去2年内约5,000篇博文,我正在尝试创建“月度”档案,以便我能以更合理的方式显示数据。

出于某种原因,我从来没有真正与日期一起工作,而且我的知识缺乏。

我正在使用Linq / C#;有人能指出我正确的方向来学习如何做到这一点吗?

干杯

马特

2 个答案:

答案 0 :(得分:0)

嗯,它与基于整数属性的过滤没有太大区别:

DateTime beginDate, endDate;
// set beginDate and endDate as appropriate, based on the month you are displaying
// beginDate = new DateTime(2011, 1, 1);
// endDate = beginDate.AddMonths(1);
var query = from post in db.Entries
            where post.Date >= beginDate && post.Date < endDate
            orderby post.Date descending
            select post;

答案 1 :(得分:0)

这实际上取决于您的要求以及UI的流动方式。在大多数情况下,您可以提供一系列日期,并查询该范围内的帖子。

格式化结果帖子完全取决于您,您需要使用哪些工具以及您需要执行的操作。但是,您可以使用GroupBy在特定日期对帖子进行分组,然后遍历每个组以输出单个链接。我的示例在控制台应用程序中显示了这一点。您应该能够推断如何将其应用于您的需求。

var postsByMonth = (from post in context.Posts
                            where post.Date >= start && post.Date < end
                            orderby post.Date descending
                            select post).GroupBy(post => new DateTime(post.Date.Year, post.Date.Month, 1));

            foreach (IGrouping<DateTime, Post> posts in postsByMonth)
            {
                Console.WriteLine("{0:MMM} {0:yyyy}", posts.Key);
                Console.WriteLine("======================");
                Console.WriteLine();

                foreach (Post post in posts)
                {
                    Console.WriteLine("Post from {0}", post.Date);
                }

                Console.WriteLine();
            }