比较linq中的日期

tin*_*han 4 html c# linq forms linq-to-entities

我想查询数据库中日期大于或等于给定日期的项目.

db中的日期是日期时间并记录时间.

如果用户输入搜索字符串"1/30/2014",则他们希望返回在该日期的任何时间发生的条目.但是,任何在上午12点之后有时间的东西都不会被退回.

我知道我可以简单地在搜索字符串中添加一天,但是有更合适的方法吗?

if (form["closedend"] != "")
{
     DateTime d = DateTime.Parse(form["closedend"]);
     traces = traces.Where(s => s.date_Closed >= d);
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 12

您可以使用该Date属性截断时间部分:

 traces = traces.Where(s => s.date_Closed.Date <= d.Date);
Run Code Online (Sandbox Code Playgroud)

通过这种方式你可以包括这一天,因为这两天DateTime都是午夜.

如果您DateTime.Date不支持使用LINQ to Entities 更新,则可以使用此解决方案:在LINQ to Entities中使用DateTime

.Where(s => EntityFunctions.TruncateTime(s.date_Closed) <=  EntityFunctions.TruncateTime(d))
Run Code Online (Sandbox Code Playgroud)

  • 由于不推荐使用EntityFunctions,我最终使用了DbFunctions。谢谢您的帮助! (2认同)