C# 实体框架Codefirst中的日期比较帮助

C# 实体框架Codefirst中的日期比较帮助,c#,.net,entity-framework,C#,.net,Entity Framework,代码将继续,稍后将使用compareLogin变量,但这里会引发一个异常,该异常表示: LINQ to Entities中不支持指定的类型成员“Date”。只支持初始值设定项、实体成员和实体导航属性 请帮助并告诉我如何比较数据库中的日期。您可以使用以下功能: using (var attendanceContext = new AttendanceAppContext()) { var compareLogin = attendanceContext.Attend

代码将继续,稍后将使用compareLogin变量,但这里会引发一个异常,该异常表示: LINQ to Entities中不支持指定的类型成员“Date”。只支持初始值设定项、实体成员和实体导航属性

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

您可以使用以下功能:

    using (var attendanceContext = new AttendanceAppContext())
    {
        var compareLogin = attendanceContext.Attendances.FirstOrDefault(u =>
        u.LoginDate == DateTime.Now.Date &&
        u.Employee.Username == user.Username);
另外,如果
u.LoginDate
在数据库中是没有时间的日期,您可以尝试使用
DateTime.Today
而不是
DateTime.Now.date
。如果不起作用,只需将其提取到某个变量中(例如
var Today=DateTime.Today
),并在LINQ表达式中使用它。

将代码更改为:

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

waht是Emloyee.Username。您是否正在加入另一个表?哦,不,它只是一个名为Employee的Employee类型的对象。我将其定义为“public Employee Employee{get;set;}”“。还有另一个类别的员工,我将此链接到该类别。我想将其与当前日期而不是时间进行比较。因为稍后我想看看是否有人在同一天已经登录服务器一次。那个么这是怎么发生的呢?这是显示错误的代码。我在这里使用的是DbSet类型的对象,编译器一直建议我必须使用FirstOrDefault()。
 var compareLogin = (from a in attendanceContext.Attendances.FirstOrDefault
                     where a.LoginDate == DateTime.Now.Date && a.Employee.Username == user.Username
                     select a).ToList();