我在添加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'?它可能不是你在调试器中看到的。 –