Linq-to-SQL仅搜索日期的DATE部分

Yaq*_*mad 1 comparison date sql-server-2008 linq-to-sql

我需要根据日期范围获取数据,如:

SELECT * FROM MyTable WHERE 
myDate >= 'May 17 2012' AND 
myDate <= 'May 17 2012'
Run Code Online (Sandbox Code Playgroud)

我在LINQ中编写了这个查询,问题是LINQ正在将此查询转换为:

SELECT * FROM MyTable WHERE 
myDate >= 'May 17 2012 12:00:00:000AM' AND 
myDate <= 'May 17 2012 12:00:00:000AM'
Run Code Online (Sandbox Code Playgroud)

问题是LINQ也在考虑时间部分,但我只需要搜索日期部分.

谁能帮我?

谢谢.

Yaq*_*mad 8

只是想与您分享我找到了解决方案!

EntityFunctions为我们提供了TruncateTime(),它可以用于此目的.

EntityFunctions.TruncateTime

 from e in MyContext.MyTable.Where(a =>
 EntityFunctions.TruncateTime(a.DateTimeColumn) ==   
 EntityFunctions.TruncateTime(DateTime.Now))  select e;
Run Code Online (Sandbox Code Playgroud)

编辑: 对于EntityFramework 6及以上:

 from e in MyContext.MyTable.Where(a =>
 DbFunctions.TruncateTime(a.DateTimeColumn) ==   
 DbFunctions.TruncateTime(DateTime.Now))  select e;
Run Code Online (Sandbox Code Playgroud)

我在这里找到.

  • 对于现在看到这个的人来说,仅供参考:对于EntityFramework 6,"EntityFunctions"已被弃用并被"DbFunctions"取代 (2认同)