0

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

我想退回今天发送的所有表单提交。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 的实际数据库设置它时,它不起作用。

通过一些反复试验,并查看我程序其他部分的代码,我注意到 C# 实现DateTime包含12:00:00AM作为日期的一部分,并且当它与 SQL 进行比较时,它会发送确切的时间.

它不会让我将 aDateTime与字符串进行比较,因此我什至无法将“today”格式化为字符串。

我在这里实例化的 CombinedReport 模型只是特定页面的视图模型,并不直接映射到数据库(“ContactEmails”会)。

让我保持强类型视图和模型的最佳前进方式是什么?

4

2 回答 2

1

如果您只想比较值的日期部分,则应明确说明:

DateTime today = DateTime.Today;
report.emails = report.db.ContactEmails
                         .Where(w => w.FormInserted.Date == today)
                         .ToList();

现在,您使用的 LINQ 的风格是否支持该Date属性是另一回事 - 但这就是我要尝试开始的内容。

于 2012-05-15T13:56:20.177 回答
1

如果您使用的是 EF,请使用以下EntityFunctions.TruncateTime方法:

.Where(w => EntityFunctions.TruncateTime(w.FormInserted).Equals(DateTime.Today))
于 2012-05-15T14:29:04.103 回答