咱们知道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仍是老老实实在数据库写视图或者存储过程等吧。。。数据库