说我有一个数据库,其中包含过去2年内约5,000篇博文,我正在尝试创建“月度”档案,以便我能以更合理的方式显示数据。
出于某种原因,我从来没有真正与日期一起工作,而且我的知识缺乏。
我正在使用Linq / C#;有人能指出我正确的方向来学习如何做到这一点吗?
干杯
马特
答案 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();
}