读书人

LINQ 上下连接查询 # 100% 结贴

发布时间: 2014-01-12 00:03:16 作者: rapoo

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的组再按照右边分组。

读书人网 >.NET

热点推荐