我有一个使用EF4的Linq声明
var q = from a in FunctionA
from b in FunctionB.Where(a=>a.Id== b.Id).DefaultIfEmpty()
from c in FunctionC.Where(c=>c.Id== b.Id).DefaultIfEmpty()
select a;
其中FunctionA,FunctionB和FunctionC返回集合。
对于某些数据条件,我得到一个null异常,因为“fromB in FunctionB.Where(a => a.Id == b.Id).DefaultIfEmpty()”中的b值有时为null然后语句“来自FunctionC.Where中的c(c => c.Id == b.Id).DefaultIfEmpty()”因为b为空而爆炸。
在这里进行外部联接的正确方法是什么?请帮忙!
谢谢!
答案 0 :(得分:0)
您的Where
语法看起来不正确,我认为您实际上正在使用linq-to-objects
,但您需要做的就是添加一个条件来检查其中b不为空
编辑 - 根据您的评论,您想要这样做
var q = from a in FunctionA
from b in FunctionB.Where(x => a.Id == x.Id).DefaultIfEmpty()
from c in FunctionC.Where(x => b != null && b.Id== x.Id).DefaultIfEmpty()
select a;