我正在开发一个显示(突出显示)特定事件发生日期的应用程序。 在我必须使用的数据库中,有一个表包含日期间隔或具有特殊含义的日期集合(如假期集合,学校休息......)。当定义事件时,用户定义该事件发生的日期(如果它周期性地发生),但是用户还可以定义该特定事件在特定间隔上发生或不发生。 例如 - 如果那个日子不是假日,那么每个星期天都会发生一个事件。 现在,我已经通过从数据库中读取该事件的数据(确定该事件发生的那一天),然后填充了将突出显示日期的列表来解决期刊部分(对于图形表示,我使用MotnhCalendar及其BoldedDates数组) ):
for (DateTime day = start; day < end;day = day.AddDays(1))
{
if (Sunday && day.DayOfWeek == DayOfWeek.Sunday)
{
MarkedDates.Add(day);
}
monthCalendar1.BoldedDates = MarkedDates.ToArray();
}
现在,为了使此代码正常工作,我需要跳过属于特殊时间间隔的日期(在这种情况下,如果该日期是假日)。可以通过在if子句中添加另一个条件来轻松完成:
!SpecialDates.Contains(day)
问题是我不知道如何用数据库中的这些特殊日期填充列表。我不能简单地“硬编码”它,因为这些特殊的日期集合/间隔可以随时更改。所以,我的问题是 - 如何通过使用SQL和C#命令从数据库中读取数据并将其保存在列表中。
由于
答案 0 :(得分:1)
由于您使用的是SQL Server 2008 R2,我建议使用ADO.NET Entity Framework等ORM工具访问您的数据库 - 最好使用最新版本EF 5。
网上有很多关于如何起床的教程。与它一起运行 - 一个好的Creating Model Classes with the Entity Framework。
为了让您了解它的简单性,这里有一个示例,说明您需要实现的目标所需的最少量代码:
using (var db = new MyDbContext())
{
var specialDates = db.SpecialDatesTable.ToList();
}