为什么在使用IsNull条件时会出现NullReferenceException
本文关键字:NullReferenceException 条件 IsNull 为什么 | 更新日期: 2023-09-27 18:20:03
我必须加入两个不同的数据表,就像linq:一样
// 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。你知道为什么吗?
感谢
from q in UP.DefaultIfEmpty()
表示,如果没有为您的p
找到匹配的q
,它将使用默认值,该值为null(与FirstOrDefault()
和SingleOrDefault()
函数相同)。
检查q != null
,它应该可以工作。
对于联接后的行,p和q中的一个可能为null。检查它们是否无效。
where p!=null
&& p.Field<DateTime>("DATE") != null
&& q != null
&& !q.IsNull("CHG_PCT_1D")