我正在尝试这样做,但它不起作用,它返回空结果:
if (inputDate != null)
{
dataContext.myTable
.Where(r => r.myDate.HasValue &&
r.myDate.Value.Day == inputDate.Value.Day)
}
我想比较两个可空的DateTime
值,我想从数据库中仅检索属于某个DateTime
的{{1}}值。为了简化这个问题,我首先尝试仅比较它们的Date
值。
请不要标记为重复,我正在使用 EF5 ,因此我没有Day
功能。
答案 0 :(得分:1)
正如您所说,实体框架会抛出错误。您拥有的最佳选择是使用条件在当天的第一秒和当天的最后一秒之间的条件。
if(inputDate != null)
{
/* Assuming inputDate.Value only contains the Date part.
i.e. : 2017-05-23 instead of 2017-05-23 10:00:32 */
DateTime inputDateFirstSecond = inputDate.Value;
DateTime inputDateLastSecond = inputDateFirstSecond
.AddHours(23)
.AddMinutes(59)
.AddSeconds(59);
dataContext.myTable.Where(r => r.myDate.HasValue &&
(r.myDate.Value >= inputDateFirstSecond && r.myDate.Value <= inputDateLastSecond)
)
}
有一些SQL Server的实体框架扩展可以让您使用日期时间部分,但如果您将来更改数据库引擎它们将不起作用。