Entity Framework 日期时间查询
Entity Framework DateTIme Query
我在添加日期时间检查作为 where
子句的一部分时遇到了 linq 子查询 return 无效数据的问题。
这是原始查询,它是 returning 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
的 DateTime
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
and/or startOfDayQueryParam
变量包含调试器中未显示的时间部分。请注意,默认情况下不显示毫秒部分,更不用说滴答了。
要 100% 确定您是在与 日期 进行比较,请将条件的日期部分更改为
&& item.StartDate >= priorMonthStartOfDay.Date
&& item.EndDate <= startOfDayQueryParam.Date
我在添加日期时间检查作为 where
子句的一部分时遇到了 linq 子查询 return 无效数据的问题。
这是原始查询,它是 returning 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
and/or startOfDayQueryParam
变量包含调试器中未显示的时间部分。请注意,默认情况下不显示毫秒部分,更不用说滴答了。
要 100% 确定您是在与 日期 进行比较,请将条件的日期部分更改为
&& item.StartDate >= priorMonthStartOfDay.Date
&& item.EndDate <= startOfDayQueryParam.Date