LINQ 左右连接查询 ###################### 100% 结贴
sinlist = sobj.GetListInfo(conditionsql, "id desc");
unlist=uojb.GetListInfo(" Legally='通过' ","");
tsinlist=tsobj.GetListInfo("","");
var resul= from u in unlist
join t in tsinlist on u.UserId equals t.UserId
from s in sinlist join
select new
把sinlist 看作S 表, unlist看作U 表,tsinlist看作T表,用SQL 语句来写我想实现的是,
select * from S left join (select * from T left join U on t.id=u.id) a
on S.ID=a.uid
在后台用LINQ 怎么写?坐等大神来,
[解决办法]
select * from S left join (select * from T left join U on t.id=u.id) a
on S.ID=a.uid
var query= from s in S
join a in ( from t in T join u in U on t.id equlas u.id into lg
from u in lg.DefaultIfEmpty()
select t) A
on s.ID equlas a.uid into l
from a in l.DefaultIfEmpty()
select s;
[解决办法]
你的问题是因为left join,所以t有可能会出现null的情况
[解决办法]
from s in S
join t in T on s.sid equals t.id into st
from p in st.DefaultIfEmpty()
join u in U on u.id equals t.id into ut
from gin ut.DefaultIfEmpty()
select s
[解决办法]
第五行from gin=from g in
[解决办法]
左右同时连接的思路就是先左边groupjoin右边,再对key=null的组再按照右边分组。