2012-01-10 45 views
1

我必須參加2個不同的數據表像LINQ:爲什麼我在使用IsNull條件時有NullReferenceException?

// let use Linq 
     var DateMarket = from p in IndexPrice.AsEnumerable() 
         join q in TickerPrice.AsEnumerable() on p.Field<DateTime>("DATE") equals q.Field<DateTime>("DATE") into UP 
         from q in UP.DefaultIfEmpty() 
         where p.Field<DateTime>("DATE") != null && !q.IsNull("CHG_PCT_1D") 
         select TestRecap.Rows.Add(p.Field<DateTime>("DATE"), q.Field<Double>("CHG_PCT_1D")) ; 

但即使我使用條件:

where p.Field<DateTime>("DATE") != null && !q.IsNull("CHG_PCT_1D") 

我仍然有在該行一個NullReferenceException。你知道爲什麼嗎?

謝謝

+0

連接後有任何行(在select語句中)? – 2012-01-10 07:56:03

回答

0

p和q中的一個在加入後可能爲null。檢查他們的廢除。

where p!=null 
    && p.Field<DateTime>("DATE") != null 
    && q != null 
    && !q.IsNull("CHG_PCT_1D") 
1

from q in UP.DefaultIfEmpty()表明,如果沒有匹配q發現您p,它會使用默認值,這爲空(同樣與FirstOrDefault()SingleOrDefault()功能)。

檢查q != null,它應該工作。

+0

這很好,謝謝 – 2012-01-10 08:11:40

相關問題