首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2014-01-12 
LINQ 左右连接查询###################### 100% 结贴 sinlist sobj.GetListInfo(conditionsql, id desc

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

热点排行