如何在LINQ中编写等效的SQL LEFT JOIN?

时间:2013-04-19 14:27:54

标签: sql linq

我需要将此SQL转换为LINQ,并且非常感谢一些帮助。

SELECT * FROM Adx_eventSet AS es
LEFT JOIN afx_eventsponsor_eventSet AS spon
ON es.Adx_eventId = spon.adx_eventid

我试过这个,但它不是左连接,所以只有一个结果。

from t in Adx_eventSet
join x in adx_eventsponsor_eventSet on t.Adx_eventId equals x.adx_eventid
select t

1 个答案:

答案 0 :(得分:1)

您想使用DefaultIfEmpty()。见下文。

var leftJoin = 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  
               };

假设每个表都有Name属性。