[英]Comparing DateTime with ASP.NET MVC and SQL Server
我正在嘗試創建一個強類型模型和視圖。 這部分代碼應該返回以聯系我們形式發送的“電子郵件”列表。
我想返回今天發送的所有表單提交。 SQL Server 2008數據類型是datetime
。 所以我的模型中有一個DateTime
字段。
public ActionResult ResultTable()
{
CombinedReport report = new CombinedReport();
report.emails = report.db.ContactEmails.Where(w => w.FormInserted.Equals(DateTime.Today)).ToList();
return PartialView(report);
}
當我為本地內置的SQL Server CE配置運行時,它工作正常。
當我為運行SQL Server 2008的實際數據庫設置它時,它不起作用。
通過一些反復試驗,並查看程序其他部分的代碼,我注意到DateTime
的C#實現包括作為日期的一部分的12:00:00AM
,當它與SQL進行比較時,它正在發送確切的時間。
它不會讓我將DateTime
與字符串進行比較,因此我甚至無法將“今天”格式化為字符串。
我在這里實例化的CombinedReport模型只是特定頁面的視圖模型,並不直接映射到數據庫(“ContactEmails”確實)。
什么是前進的最佳方式,讓我保持強烈的視圖和模型?
如果您只想比較值的日期部分,則應該明確說明:
DateTime today = DateTime.Today;
report.emails = report.db.ContactEmails
.Where(w => w.FormInserted.Date == today)
.ToList();
現在,您使用的LINQ的味道是否支持Date
屬性是另一回事 - 但這就是我試圖開始的。
如果您使用的是EF,請使用EntityFunctions.TruncateTime
方法:
.Where(w => EntityFunctions.TruncateTime(w.FormInserted).Equals(DateTime.Today))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.