咱們知道lambda表達式在Linq to sql 和 Entity framework 中使用join函數能夠實現inner join,那麼怎麼才能在lambda表達式中實現left join呢?祕訣就是在join後面加上一個函數DefaultIfEmpty函數,實際上這個函數在linq中貌似也只有將inner join轉換爲 left join的做用,示例以下sql
var joinResult = DB.Table1s.Join(DB.Table2s, a => a.id, b => b.id, (a, b) => new {a,b} ).DefaultIfEmpty();
這樣返回的joinResult就包含DB.Table1s left join DB.Table2s的結果了。若是要實現right join將DB.Table1s和DB.Table2s的位置返過來便可,可是目前彷佛在linq lambda表達式中沒有很好的辦法實現full outer join,若是真的用到了full outer join仍是老老實實在數據庫寫視圖或者存儲過程等吧。。。數據庫