簡體   English   中英

LINQ中對SQL DataContext的空引用異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM