C# 尝试使用defaultifempty方法连接2个以上的表时,在linq表达式中获取null引用错误
如果第二个表中没有匹配项,我尝试使用defaultIfEmpty左键联接三个表,以指定null值,然后使用第二个表的值联接第三个表C# 尝试使用defaultifempty方法连接2个以上的表时,在linq表达式中获取null引用错误,c#,.net,linq,entity-framework,C#,.net,Linq,Entity Framework,如果第二个表中没有匹配项,我尝试使用defaultIfEmpty左键联接三个表,以指定null值,然后使用第二个表的值联接第三个表 var test = (from Eqpt in Eqpts join SystemEqpt in FleetSysEqpt on SystemEqpt.ID equals eqpt.SwCompanyEqptKey into sysEqptTemp from a in sysEqptTemp.DefaultIfEmp
var test = (from Eqpt in Eqpts
join SystemEqpt in FleetSysEqpt on SystemEqpt.ID equals eqpt.SwCompanyEqptKey into sysEqptTemp
from a in sysEqptTemp.DefaultIfEmpty()
join System in System on a.SwFleetSystemKey equals System.ID
)
当“a”变为null时,我得到null对象引用错误。加入时检查“a”是否为空的任何建议。您只需添加一个
where
条件即可
var test = (from Eqpt in Eqpts
join SystemEqpt in FleetSysEqpt on SystemEqpt.ID equals eqpt.SwCompanyEqptKey into sysEqptTemp
from a in sysEqptTemp.DefaultIfEmpty()
join System in System on a.SwFleetSystemKey equals System.ID
where a != null
)
您只需在其中添加一个
条件
var test = (from Eqpt in Eqpts
join SystemEqpt in FleetSysEqpt on SystemEqpt.ID equals eqpt.SwCompanyEqptKey into sysEqptTemp
from a in sysEqptTemp.DefaultIfEmpty()
join System in System on a.SwFleetSystemKey equals System.ID
where a != null
)
不,我仍然得到相同的异常。将其添加到联接上方,而不是下方。现在我没有得到异常,但结果集是错误的。如果第二个表中没有记录,则最终结果不包括来自第一个表(Eqpts)的数据。它看起来像一个内部连接。不,我仍然得到相同的异常。将它添加到连接上方,而不是下方。现在我没有得到异常,但结果集是错误的。如果第二个表中没有记录,则最终结果不包括来自第一个表(Eqpts)的数据。它看起来像一个内部连接。不,我仍然得到相同的异常。将它添加到连接上方,而不是下方。现在我没有得到异常,但结果集是错误的。如果第二个表中没有记录,则最终结果不包括来自第一个表(Eqpts)的数据。它看起来像一个内部连接。