我有一个由这段代码引起的空引用异常:
var recentOrderers = (from p in db.CMS
where p.ODR_DATE > DateTime.Today - new TimeSpan(60, 0, 0, 0)
select p.SOLDNUM).Distinct();
result = (from p in db.CMS
where p.ORDER_ST2 == "SH" &&
p.ODR_DATE > DateTime.Today - new TimeSpan(365, 0, 0, 0) &&
p.ODR_DATE < DateTime.Today - new TimeSpan(60, 0, 0, 0) &&
!(recentOrderers.Contains(p.SOLDNUM))/**/
select p.SOLDNUM).Distinct().Count();
结果是双重类型。当我注释掉:
!(recentOrderers.Contains(p.SOLDNUM))
代码运行良好。我已经验证了recentOrderers 不为空,并且当我运行时:
if(recentOrderes.Contains(0)) return;
执行遵循此路径并返回。不知道发生了什么,因为我在上面使用了类似的代码:
var m = (from p in db.CMS where p.ORDER_ST2 == "SH" select p.SOLDNUM).Distinct();
double result = (from p in db.CUST
join r in db.DEMGRAPH on p.CUSTNUM equals r.CUSTNUM
where p.CTYPE3 == "cmh" && !(m.Contains(p.CUSTNUM)) &&
r.ColNEWMEMBERDAT.Value.Year > 1900
select p.CUSTNUM).Distinct().Count();
它也完美运行。注意到相似之处后,有人可以帮忙吗?提前致谢。