我的数据库中有 issutime 表格,其格式如下:
当我按照确切的日期和时间进行搜索时,我得到了结果。但我想要的是只用日期执行搜索。例如:2014-02-28应返回该日期的所有结果。
这是我的代码:
var date = Convert.ToDateTime(search);
return View(db.newsletter.Where(x => x.issuetime == date).ToList());
有什么想法吗?
答案 0 :(得分:2)
这类似于Kosar的方法,但更简单。它还应该正确处理当天最后一秒发生的事件。
var date = Convert.ToDateTime(search).Date;
var nextDay = date.AddDays(1);
return View(db.newsletter
.Where(x => x.issuetime >= date && x.issuetime < nextDay)
.ToList());
Michael Dunlap的方法可以在LINQ-to-SQL中运行,但LINQ to Entities似乎无法处理它。实体框架具有TruncateTime(请参阅here,但EntityFunctions似乎已被弃用,因此我认为我不建议使用它。
答案 1 :(得分:1)
使用DateTime类的Date属性。
var date = Convert.ToDateTime(search);
return View(db.newsletter.Where(x => x.issuetime.Date == date.Date).ToList());
答案 2 :(得分:1)
当您仅使用日期搜索时,它会将日期的时间戳更改为00:00:00:000。 例如2014-02-28,它查找2014-02-28 00:00:00:000,但是你要找的是发行时间相等的所有记录,大于2014-02-28 00:00:00 :000和小于2014-02-29 00:00:00:000。 如果Michael解决方案不适合你,你可以尝试这样的事情。
var date1=DateTime.Parse(date + " " + "00:00:00 AM")
var date2=DateTime.Parse(date + " " + "11:59:59 PM")
return View(db.newsletter.Where(x => x.issuetime>= date1 && x.issuetime<= date2).ToList());