我想查询数据库中日期大于或等于给定日期的项目。
db中的日期是日期时间并记录时间。
如果用户输入搜索字符串" 1 / 30/2014",他们希望返回该日期任何时间发生的条目。但是,任何在上午12点之后有时间的东西都不会被退回。
我知道我可以在搜索字符串中添加一天,但是有更合适的方法吗?
if (form["closedend"] != "")
{
DateTime d = DateTime.Parse(form["closedend"]);
traces = traces.Where(s => s.date_Closed >= d);
}
答案 0 :(得分:11)
您可以使用Date
property截断时间部分:
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))
答案 1 :(得分:0)
你说
日期大于或等于给定日期
但是在你的代码中你写了
s.date_Closed <= d
我认为您必须更改<=
>=
以获取大于或等于d的日期,现在您的日期小于或等于d。
答案 2 :(得分:0)
对于此示例,您不需要任何其他dll 。您可以实现其他函数,返回bool
,f.e:
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));