我有asp.net应用程序,并使用Entity Framework将其与数据库连接。在这个应用程序中,我有一个文本框来获取日期(我在这里使用日历css样式),以及它在字符串类型中。
我的数据库中有一个列,它的日期时间格式,我需要将文本框值与数据库中的日期列进行比较,为此我只使用了代码
public StudentAttendances(string date)
{
if (date != "")
{
DateTime date1 = Convert.ToDateTime(date);
foreach (DataAccess.StudentAttendance studentAttendance in buDataEntities.StudentAttendances.Where(s => s.Date == date1))
{
this.Add(new StudentAttendance(studentAttendance.StudentId));
}
}
}
例如,如果我在文本框中选择一个日期(格式为04/05/2012),当我将其与数据库进行比较时,它没有显示任何数据,但实际上有一些数据用于此日期。
答案 0 :(得分:1)
答案 1 :(得分:1)
您的代码正在比较日期和时间(小时,分钟等必须匹配)。尝试比较像这样的日期部分:
buDataEntities.StudentAttendances.Where(s => s.Date.Subtract(date1).Days == 0)
我还认为您应该指定用户输入日期的格式。 04/05/2012可能意味着4月4日或5月5日,具体取决于您的计算机区域设置。 下面是一个示例(下面),用于将美国格式的日期字符串转换为DateTime对象:
DateTime date1 = DateTime.Parse(date, new CultureInfo("en-US"));
希望有所帮助!
答案 2 :(得分:1)
请检查以下内容是否适合您:
public StudentAttendances(string date)
{
if (date != "")
{
// please see the change from your given code
DateTime date1 = DateTime.ParseExact(date, "MM/dd/yyyy",
System.Globalization.CultureInfo.InvariantCulture);
foreach (DataAccess.StudentAttendance studentAttendance in buDataEntities.StudentAttendances.Where(s => s.Date == date1))
{
this.Add(new StudentAttendance(studentAttendance.StudentId));
}
}
}