使用实体框架仅从datetime值获取日期部分

Saf*_*ena 10 c# asp.net entity-framework sql-server-2008 entity-framework-5

我想从数据库'日期时间'值获取日期部分我使用下面的代码..但它是获取日期和时间部分.

using (FEntities context = new FEntities())
{
    DateTime date = DateTime.Now;
    if (context.tblvalue.Any(x => x.date == date))
    {    
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 24

您可以只比较指定的部分:

context.tblvalue.Any(x => x.date.Year == data.Year 
                        && x.date.Month == data.Month 
                        && x.date.Day == data.Day);
Run Code Online (Sandbox Code Playgroud)

编辑: 您还可以尝试以下方法:

context.tblvalue.Any(x => EntityFunctions.TruncateTime(x.date) == data.Date);
Run Code Online (Sandbox Code Playgroud)

另一种方法:

context.tblvalue.Any(x =>  SqlFunctions.DatePart("year", x.date)  == data.Year 
                        && SqlFunctions.DatePart("month", x.date) == data.Month 
                        && SqlFunctions.DatePart("day", x.date)   == data.Day);
Run Code Online (Sandbox Code Playgroud)

  • 在EF的更新版本中,EntityFunctions已经过时,已经被"DbFunctions"取代,但是第二种方法非常有效,我在这些情况下使用的方法. (5认同)

Dav*_*wzy 11

使用实体框架6并更新使用

context.tblvalue.Any(x => DbFunctions.TruncateTime(x.date) == data.Date);
Run Code Online (Sandbox Code Playgroud)