与存储在数据库中的日期字段执行日期比较

Performing a date comparison with a date field stored in the database

我正在尝试将今天的日期与数据库中的日期进行比较。 今天的日期像这样保存在数据库中:2016-06-14 00:00:00.000

dtTodaysDate 是这样生成的:6/14/2016 11:51:09 AM

这是方法

         public string CheckCreateOneProjectReportPerDay(string strprojectId)
                {
                    string checkReturnValue = "DoesNotExist";
                    DateTime dtTodaysDate = DateTime.Now;

                    var checkProjectRec =
                        _objContext.tbl_Project_Status_MSTR.Where(
                            s => s.ProjectID == strprojectId && s.StatusDate == dtTodaysDate);

                    if (checkPrjDate.Any())
                    {
                        checkReturnValue = "RecordExist";
                    }

                    return checkReturnValue;
                }

我尝试在下面的查询中使用关键字 contains 但没有成功

            var checkProjectRec =
                        _objContext.tbl_Project_Status_MSTR.Where(
                            s => s.ProjectID == strprojectId && s.StatusDate == dtTodaysDate);  

上面的查询总是 return 没有,因为它们不匹配。有没有更好的办法 做这个比较?

您的数据库列 StatusDate 似乎仅存储其 DateTime 对象的日、月和年。

我建议更改您的 linq 查询以仅搜索 dtTodaysDate 的那些值。

试一试:

var checkProjectRec =
                    _objContext.tbl_Project_Status_MSTR.Where(
                        s => s.ProjectID == strprojectId 
                            && s.StatusDate.Year == dtTodaysDate.Year
                            && s.StatusDate.Month == dtTodaysDate.Month
                            && s.StatusDate.Day == dtTodaysDate.Day);

Linq-to-SQL: DateTime Methods 可能也值得研究。