我必须加入2个不同的数据表,例如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。你知道为什么吗?
由于
答案 0 :(得分:1)
from q in UP.DefaultIfEmpty()
表示,如果找不到与您的q
匹配的p
,则会使用默认值,该值为空(与FirstOrDefault()
相同,且SingleOrDefault()
函数)。
检查q != null
,它应该有效。
答案 1 :(得分:0)
加入后,p和q中的一个对于行可能为null。检查它们的无效。
where p!=null
&& p.Field<DateTime>("DATE") != null
&& q != null
&& !q.IsNull("CHG_PCT_1D")