返回的Linq左外部联接替换空值

返回的Linq左外部联接替换空值,linq,linq-to-sql,Linq,Linq To Sql,我相信这之前已经讨论过了,但我读过几篇LINQ left outer join的帖子,不知道是否已经讨论过。与我所寻找的最接近的线程是,但它与LINQ无关 现在转到我的问题,我的查询使用DefaultIfEmpty()进行左外部联接。下面是我从另一篇文章中抓取的一个示例查询,以供说明 from adx_event in Adx_eventSet join adx_eventsponsor in adx_eventsponsor_eventSet on adx_event.Adx_eventId

我相信这之前已经讨论过了,但我读过几篇LINQ left outer join的帖子,不知道是否已经讨论过。与我所寻找的最接近的线程是,但它与LINQ无关

现在转到我的问题,我的查询使用DefaultIfEmpty()进行左外部联接。下面是我从另一篇文章中抓取的一个示例查询,以供说明

from adx_event in Adx_eventSet
join adx_eventsponsor in adx_eventsponsor_eventSet
on adx_event.Adx_eventId equals adx_eventsponsor.adx_eventid into j 
from adx_eventsponsor in j.DefaultIfEmpty()
select new 
{ 
 Name = adx_event.Name,
 Name = adx_eventsponsor != null ? adx_eventsponsor.Name : null  
};
在上面的查询中,如果adx_EventShandor返回null,则检查“on adx_event.adx_eventId等于adx_eventShandor.adx_eventId In j”失败,出现null引用异常。如何处理这个问题

这是我正在处理的查询,很抱歉,这是一个很长的查询,有5个左连接

from t1 in table1List
join t2 in table2List on t1.ID equals t2.fID
join m in DataAccess.Data.table3List on t2.ID equals m.ID into fg
from fgi in fg.Where(m => m.Year == reportYear).DefaultIfEmpty()
join c1 in table4List on t2.ID equals c1.ID into t4
from c1 in t4.Where(c1 => c1.Year == reportYear && c1 != null).DefaultIfEmpty()
join c2 in table4List  on t2.ID equals c2.ID into t5
from c2 in t5.Where(c2 => c2.Year == reportYear - 1).DefaultIfEmpty()
join fA in table5List on t2.ID equals fA.ID into t6
from fA in t6.Where(fA => fA.Year == reportYear).DefaultIfEmpty()
join src in table6List on new { ID = fA != null ? fA.sourceID : 
new Guid("    {ccae20792ebc-4200-879d-866fc82e6afa}"), Year = reportYear } equals new 
{ ID = Src.ID, Year = Src.Year } into t7 from Src in t7.DefaultIfEmpty()
我的问题是在最后一个左外部联接中,如果fA(来自table5List)返回null,我就不能在fA.sourceID上进行联接,因此我显式地硬编码Guid以避免null异常。有什么更好的方法可以做到这一点

谢谢你的帮助