比较linq中的日期

新手上路,请多包涵

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

数据库中的日期是日期时间并记录时间。

如果用户输入搜索字符串“1/30/2014”,他们希望返回在该日期的任何时间发生的条目。但是,不会返回时间在上午 12 点之后的任何内容。

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

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

原文由 tintyethan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

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

  traces = traces.Where(s => s.date_Closed.Date <= d.Date);

通过这种方式,您将包括这一天,因为 DateTime 都是午夜。

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

 .Where(s => EntityFunctions.TruncateTime(s.date_Closed) <=  EntityFunctions.TruncateTime(d))

原文由 Tim Schmelter 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 DbFunctions.TruncateTime(StartDateTime) 从日期时间中删除时间。

     if (form["closedend"] != "")
    {
         DateTime d = DateTime.Parse(form["closedend"]);
         traces = traces.Where(s => DbFunctions.TruncateTime(s.date_Closed) >= DbFunctions.TruncateTime(d));
    }

原文由 Sayed Mahmoud 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题