C# 比较DateTime与ASP.NET MVC和SQL Server

C# 比较DateTime与ASP.NET MVC和SQL Server,c#,sql-server,asp.net-mvc,sql-server-ce,C#,Sql Server,Asp.net Mvc,Sql Server Ce,我正在尝试创建强类型模型和视图。这部分代码应该返回以联系我们的形式发送的“电子邮件”列表 我想退回今天发送的所有表格。SQL Server 2008数据类型为datetime。因此,我的模型中有一个DateTime字段 public ActionResult ResultTable() { CombinedReport report = new CombinedReport(); report.emails = report.db.ContactEmails.Where(w =

我正在尝试创建强类型模型和视图。这部分代码应该返回以联系我们的形式发送的“电子邮件”列表

我想退回今天发送的所有表格。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);
}
当我为本地内置SQLServerCE运行这个配置时,它运行得很好

当我为运行SQLServer2008的实际数据库设置它时,它不起作用

通过一些尝试和错误,并查看程序其他部分中的代码,我注意到
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,请使用以下方法:


看看如何使用Convert.ToDateTime将字符串日期+字符串时间转换为一个日期时间我正在使用VS2008和MVC3的默认LINQ实现。它似乎不支持日期property@coreno:我不相信有“默认LINQ实现”这样的东西——你应该知道你是在使用LINQtoSQL还是实体框架。
.Where(w => EntityFunctions.TruncateTime(w.FormInserted).Equals(DateTime.Today))