日期比较

时间:2011-11-17 07:17:00

标签: linq

在linq中,我写了一个日期查询,在sql和sql之间,在这种情况下,我没有得到dtata,当用户从日期输入相同的日期,到目前为止数据没有显示数据在哪里对于数据库中的特定日期。 这是我的linq查询。

    var result =  from MaterialStatus in materialRequistionEntities.Tbl_MatReq_NewItemReq_M
                             join CurrentStatus in materialRequistionEntities.Tbl_StatusMaster_M on
                             MaterialStatus.ReqCurStatus equals CurrentStatus.StatusId
                             join Employee in materialRequistionEntities.Tbl_Emp_Master_M
                              on MaterialStatus.Indentor equals Employee.EmpId
                              where (MaterialStatus.CreatedOn >= dt.Date && MaterialStatus.CreatedOn <= dt1.Date)
                              select *****************

3 个答案:

答案 0 :(得分:1)

你应该这样做:

var upperDate = dt1.Date.AddDays(1);
...
where (MaterialStatus.CreatedOn >= dt.Date
    && MaterialStatus.CreatedOn < upperDate

这样,表达式可以转换为sargable SQL谓词。

答案 1 :(得分:0)

假设dt1实际上大于dt,您可以使用

    var result =  from MaterialStatus in materialRequistionEntities.Tbl_MatReq_NewItemReq_M
                             join CurrentStatus in materialRequistionEntities.Tbl_StatusMaster_M on
                             MaterialStatus.ReqCurStatus equals CurrentStatus.StatusId
                             join Employee in materialRequistionEntities.Tbl_Emp_Master_M
                              on MaterialStatus.Indentor equals Employee.EmpId
                              where (MaterialStatus.CreatedOn.Date >= dt.Date && MaterialStatus.CreatedOn.Date <= dt1.Date)
                              select *****************

注意CreatedOn.Date处理小时/分钟/秒/毫秒组件

答案 2 :(得分:0)

我希望它没问题。

where (MaterialStatus.CreatedOn.Value.Date >= dt.Date && MaterialStatus.CreatedOn.Value.Date <= dt1.Date.AddDay(1))