[英]Null Reference Exception In LINQ to SQL DataContext
我有一個空引用異常,由以下代碼引起:
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))
代碼運行正常。 我已經驗證了lastOrderers不為null,並且在運行時:
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();
它也可以完美運行。 注意到相似性之后,有人可以幫忙嗎? 提前致謝。
我對Linq不太熟悉,但是如果沒有匹配的結果,可能是.Distinct()返回null嗎?
嘗試通過轉換為列表對象(實際上是使用.ToList()執行)顯式地從第一個查詢中獲取數據,然后在比較中使用。
var recentOrderers = (from p in db.CMS
where p.ODR_DATE > DateTime.Today - new TimeSpan(60, 0, 0, 0)
select p.SOLDNUM).Distinct().ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.