C# entityframework可以';t返回数据库中带有datetime.now条件的记录

C# entityframework可以';t返回数据库中带有datetime.now条件的记录,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正在尝试使用此查询从数据库返回一些记录: ViewBag.TrafficEnter = _iTrafficRepository.Get().Where(i => i.Type == "ورود" && i.SubmitDateTime == DateTime.Now).ToList(); 在这里您可以看到我的数据库记录: 但问题是查询不返回任何值。为什么?日期时间的问题。现在这意味着一个非常小的日期范围,它等于其精度的最小除法,在本例中为1毫秒。除非

我正在尝试使用此查询从数据库返回一些记录:

        ViewBag.TrafficEnter = _iTrafficRepository.Get().Where(i => i.Type == "ورود" && i.SubmitDateTime == DateTime.Now).ToList();

在这里您可以看到我的数据库记录:


但问题是查询不返回任何值。为什么?

日期时间的问题。现在这意味着一个非常小的日期范围,它等于其精度的最小除法,在本例中为1毫秒。除非你的记录是用几乎与DateTime完全相同的值创建的。现在你将永远不会得到匹配

您有两种解决方案(可能不适合您的需要)

首先,不要匹配精确的日期时间,而是尝试匹配范围,例如dateTime.Now之前/之后1小时。这样做的好处是可以控制射程


或者,您可以尝试将日期值(DateTime.Now.date)与记录的日期匹配。

您可以将数据库中的
DateTime
值与
DateTime.Now
值进行比较,该值返回当前时间(包括毫秒),并且永远无法与表中的任何值匹配

修改查询以选择范围内的值

var minDate = DateTime.Today; // returns today's with time component set to 00:00:00
var maxDate = minDate.AddDays(1);
ViewBag.TrafficEnter = _iTrafficRepository.Get()
    .Where(i => i.Type == "ورود" && i.SubmitDateTime >= minDate && i.SubmitDateTime < maxDate).ToList();
var minDate=DateTime.Today;//返回今天的时间,时间组件设置为00:00:00
var maxDate=minDate.AddDays(1);
ViewBag.TrafficEnter=\u itrafficResposition.Get()
其中(i=>i.Type==“i.SubmitDateTime>=minDate&&i.SubmitDateTime

假设今天的日期是2016年5月24日,它将返回图像中显示的所有17条记录。

您的查询也与时间匹配。这就是它不返回任何内容的原因。只需比较日期。您需要在问题中输入代码,不是它的图像。@StephenMuecke我就是这么做的。tnx@KartikeyaKhosla你的意思是我在datetime.now的末尾添加一个日期语句?例如datetime.now.date?正如@KartikeyaKhosla所指出的,你永远不会有任何与
datetime.now
匹配的记录(如何将它们添加到你称之为此查询的精确毫秒数中)-您是否希望创建记录
DateTime.Today