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错误。
------解决方案--------------------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()