比较林中的日期
本文关键字:日期 林中 比较 | 更新日期: 2023-09-27 18:25:54
我想在数据库中查询日期大于或等于给定日期的项目。
数据库中的日期是一个日期时间并记录时间。
如果用户输入搜索字符串"1/30/2014",他们希望返回该日期任何时候出现的条目。然而,任何在上午12点之后的时间都不会返回。
我知道我可以简单地在搜索字符串中添加一天,但有更合适的方法吗?
if (form["closedend"] != "")
{
DateTime d = DateTime.Parse(form["closedend"]);
traces = traces.Where(s => s.date_Closed >= d);
}
您可以使用Date
属性截断时间部分:
traces = traces.Where(s => s.date_Closed.Date <= d.Date);
这样你就可以把这一天包括在内,因为两个DateTime
都是午夜。
更新如果不支持使用LINQ to Entities DateTime.Date
,则可以使用以下解决方案:在LINQ to Entitys 中使用DateTime
.Where(s => EntityFunctions.TruncateTime(s.date_Closed) <= EntityFunctions.TruncateTime(d))
你说
日期大于或等于给定日期
但在你的代码中你写了
s.date_Closed <= d
我认为您必须将<=
更改为>=
才能获得大于或等于d的日期,现在您获得的日期小于或等于d。
对于本例,您不需要任何必要的其他dll。您可以实现其他功能,返回bool
,例如:
public bool MyFunction(DateTime s)
{
DateTime d = DateTime.Parse(Your constructor);
return (s.date_Closed >= d);
}
var query = from obj in traces
where MyFunction(obj.date_Closed.Date)
select obj;
或:
var query = traces.Where(p => MyFunction(p.data_Closed.Date));
您可以使用DbFunctions.TruncateTime(StartDateTime)
从datetime中删除时间。
if (form["closedend"] != "")
{
DateTime d = DateTime.Parse(form["closedend"]);
traces = traces.Where(s => DbFunctions.TruncateTime(s.date_Closed) >= DbFunctions.TruncateTime(d));
}