在LINQ中比较日期部分
尝试同时使用的Date
属性:
Date today = DateTime.Today; // Effectively DateTime.Now.Date
var dataFromToday = from record in context.Records
where record.TimeStamp.Date == today
select record;
我相信这个工程的LINQ to SQL ...为tvanfosson说,它并不适用于EF。
我知道它没有。那是我昨天的事。 – tvanfosson
@tvanfosson:正式做出更强调:) –
也是一个真正的痛苦,因为我通常嘲笑单元测试的数据上下文,它确实与LINQ一起工作(明显)。我必须记住,在开发单元测试的存储库时,可能会说谎。 – tvanfosson
你可以创建一个CLR UDF来做日期比较,然后在你的linq中将它引用到sql linq查询中。
using System.Data.Objects.SqlClient; //Don't forget this!!
//You can access to SQL DatePart function using something like this:
YourTable.Select(t => new { DayOfWeek = SqlFunctions.DatePart("weekday", t.dateTimeField) - 1 }); //Zero based in SQL
//You can compare to SQL DatePart function using something like this:
DateTime dateToCompare = DateTime.Today;
YourTable.Where(t => SqlFunctions.DatePart("weekday", t.dateTimeField) - 1 == dateToCompare }); //Zero based in SQL
using System.Data.Entity;
DbFunctions.TruncateTime(u.BirthDate) = DbFunctions.TruncateTime(someDate)
我知道EF不支持这种转换,但LINQ to SQL的支持可能使用的日期时间的'.Date'属性进行比较。 - 只是检查,它确实。链接张贴在我的答案。 – tvanfosson
在EF中,您可以使用[EntityFunctions.TruncateTime](http://msdn.microsoft.com/zh-cn/library/dd395596.aspx)。见http://*.com/questions/4188066/linq-to-entities-group-by-failure-using-date –