2
    using (var attendanceContext = new AttendanceAppContext())
    {
        var compareLogin = attendanceContext.Attendances.FirstOrDefault(u =>
        u.LoginDate == DateTime.Now.Date &&
        u.Employee.Username == user.Username);

代码继续,稍后使用 compareLogin 变量,但此处抛出异常:“LINQ to Entities 不支持指定的类型成员 'Date'。仅支持初始化程序、实体成员和实体导航属性。

请帮助并告诉我应该如何比较数据库中的日期。

4

2 回答 2

3

您可以使用TruncateTime函数:

using (var attendanceContext = new AttendanceAppContext())
{
    var compareLogin = attendanceContext.Attendances.FirstOrDefault(u =>
    EntityFunctions.TruncateTime(u.LoginDate) == EntityFunctions.TruncateTime(DateTime.Now) &&
    u.Employee.Username == user.Username);
}

此外,如果u.LoginDate您的数据库中是没有时间的日期,您可以尝试使用DateTime.Today而不是DateTime.Now.Date. 如果它不起作用,只需将其提取到某个变量(例如var today = DateTime.Today)中并在您的 LINQ 表达式中使用它。

于 2012-12-04T13:39:31.060 回答
0

将代码更改为:

 var compareLogin = (from a in attendanceContext.Attendances.FirstOrDefault
                     where a.LoginDate == DateTime.Now.Date && a.Employee.Username == user.Username
                     select a).ToList();
于 2012-12-04T13:40:37.783 回答