[英]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.