簡體   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