繁体   English   中英

实体框架DateTIme查询

[英]Entity Framework DateTIme Query

我在将日期时间检查作为where子句的一部分添加时,linq子查询返回无效数据时遇到问题。

这是原始查询,返回0; 因为结果集为null

var subquery = 
    (from item in g
     from e in item.Entry
    where e.Type == 1 
       && e.EntryType == 2
       && item.StartDate >= priorMonthStartOfDay
       && item.EndDate <= startOfDayQueryParam
   select e.Amount).Sum() ?? 0M;

我修改了查询以查看数据是什么。 这是该查询和结果数据集。

var subquery = 
    (from item in g
     from e in item.Entry
    where e.Type == 1 
       && e.EntryType == 2
   select new 
          {
               Amount = e.Amount,
               SD = item.StartDate,
               ED = item.EndDate,
               QD = priorMonthStartOfDay
          };

没有日期限制结果

因此,我在开始日期比较中添加了以下结果。 priorMonthStartOfDay是一个DateTime,值为12/1/2015 12:00:00 AM

var subquery = 
    (from item in g
     from e in item.Entry
    where e.Type == 1 
       && e.EntryType == 2
       && item.StartDate >= priorMonthStartOfDay
   select new 
          {
               Amount = e.Amount,
               SD = item.StartDate,
               ED = item.EndDate,
               QD = priorMonthStartOfDay
          };

开始日期限制

为什么日期比较不符合我的预期? 给定priorMonthStartOfDay的值,我希望最后两个查询的结果集相同。 我猜想这与时间相等比较有关,因为如果我从priorMonthStartOfDay减去一秒钟,则结果集将再次匹配。

唯一的逻辑解释是您的priorMonthStartOfDay和/或startOfDayQueryParam变量包含调试器中未显示的时间部分。 请注意,默认情况下不显示毫秒部分,更不用说滴答了。

为确保100%与日期进行比较,请将条件的日期部分更改为

&& item.StartDate >= priorMonthStartOfDay.Date
&& item.EndDate <= startOfDayQueryParam.Date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM