日期:2014-05-20  浏览次数:20885 次

Linq Left join关联后对外表如何加Where判断?
现在有两个表TableA和TableB。

表TableA                   表TableB 
ID   BID   Name       ID   Name


var query = from a in TableA
            join b in TableB 
            on a.BID equals b.ID into BTable
            from btb in BTable.DefaultIfEmpty()
            where a.Name = "张三"


以上Linq是A表中BID允许为空,我想取主A表中Name为"张三",且B表中的Name不等于“李四”的数据。
A表与B表是左关联的关系,在Where这个地方该怎么判断?直接用where a.Name = "张三" && btb.Name !="李四"会报NULL错误。
LINQ LeftJoin

------解决方案--------------------
from btb in BTable.DefaultIfEmpty() 
修改成
from btb in BTable.DefaultIfEmpty(name=string.Empty) 
看看
------解决方案--------------------
var query = from a in TableA.Where(x=>x.Name == "张三")
            join b in TableB.Where(y=>y.Name !="李四")
            on a.BID equals b.ID into BTable
            from btb in BTable.DefaultIfEmpty()