我正在尝试返回一个显示当天日志的视图。
这个SQL查询完全符合我的需要:
select * from Logs where Date>=GETDATE()-1
但是我在使用剃刀语法时遇到了麻烦,无法在我的视图中编写此语句。
return View(db.Logs.Where(a => a.Date >= DateTime.Today()-1));
知道如何在视图中显示当前日期的日志吗?
答案 0 :(得分:3)
它是:
return View(db.Logs.Where(a => a.Date == DateTime.Today));
或者,如果你想减去一天:
return View(db.Logs.Where(a => a.Date >= DateTime.Today.AddDays(-1)));
请注意,DateTime是一个结构,而Now
,Today
或Date
是属性,而不是方法,所以你不能像方法一样调用它们(DateTime.Today()
) 。
它们被称为就像任何其他属性一样,没有副词。
参考:http://msdn.microsoft.com/en-us/library/system.datetime.aspx
Off-Topic:
我尝试了这个,但它没有用。
这是一个糟糕的措辞。人们倾向于对此过敏,因为它没有说明,什么是错误的。你是否得到了意想不到的结果,异常,编译器警告等等。在你的情况下,它很简单,因为你正在处理一些语法错误,但在更复杂的情况下,这将不会很顺利。
答案 1 :(得分:1)
如果您尝试从当天获取日志,则表示从当天午夜到现在或过去24小时。
使用GETDATE()
的SQL中的原始查询与DateTime.Now
相同,而不是DateTime.Today
正如Serv提到的那样,你得到的结果究竟是什么?我建议你复制你在sql查询中看到的内容:
return View(db.Logs.Where(a => a.Date >= DateTime.Now.AddDays(-1)));
如果您希望它显示自午夜以来的当前日期,请使用:
return View(db.Logs.Where(a => a.Date >= DateTime.Today));
但是我还可以提出一个额外的建议,不要将您的实体对象直接返回到视图,将它们映射到视图模型对象,然后使用 ONLY 将其发送到您的视图您需要从实体获得的数据(即使它包含所有字段)