我在添加datetime檢查作爲where
子句的一部分時遇到linq子查詢返回無效數據的問題。實體框架DateTIme查詢
這是原始查詢,它返回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
是與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'的最後一個查詢的數據類型?它是一個「字符串」還是「DateTime」? – gldraphael
@gldraphael DateTime;更新的問題 – drneel
你可以說明你如何設置'priorMonthStartOfDay'?它可能不是你在調試器中看到的。 –