首页 新闻 会员 周边

linq join多条件问题

0
悬赏园豆:20 [已解决问题] 解决于 2017-06-22 13:45
select * from A left join B on A.id=B.id
    left join C on A.id=C.id and C.name='abc'

这句SQL转换成LINQ该怎么写呀,主要是第二个join的两个条件不知道怎么处理了。

胡椒&的主页 胡椒& | 初学一级 | 园豆:48
提问于:2017-06-21 15:41
< >
分享
最佳答案
0
                       from a in db.A
                       join b in db.B 
                       on a.Id equals b.Id into lb
                       from e in lb.DefaultIfEmpty()
                       join c in db.C . where c.Name == "abc"// where筛选要写到这里
                       on a.Id equals c.Id into lc
                       from f in lc.DefaultIfEmpty()
                    
                       select new
                       {
                           
                       };
收获园豆:20
开山怪不怪 | 小虾三级 |园豆:544 | 2017-06-22 11:11
其他回答(5)
0

http://www.cnblogs.com/chear/archive/2012/12/28/2836822.html

 

不要客气

czd890 | 园豆:14412 (专家六级) | 2017-06-21 16:16

行不通啊,A表和C表必须同时有id和name两个字段才能那样写,我这个C.name='abc' 只是对C表自身的一个过滤。

支持(0) 反对(0) 胡椒& | 园豆:48 (初学一级) | 2017-06-21 16:29

@白菜、: 你可以吧你的 c.name=='abc' 放到where 中

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2017-06-21 17:34
0
  var query = from A in db.Set<A>()
              join B in db.Set<B>() on A.id equals B.id
              join C in db.Set<C>() on A.id equals C.id and       C.name='abc'
              where A.id >0 
              select  xx 字段 ?    
大楚打码人 | 园豆:4313 (老鸟四级) | 2017-06-21 16:46
0

先过滤C再把C当成一个集合不就行了(这是其中一个思路)

MrNice | 园豆:3450 (老鸟四级) | 2017-06-21 17:22
0
   var info = from a in db.A
                       join b in db.B on a.Id equals b.Id into lb
                       from b in lb.DefaultIfEmpty()
                       join c in db.C on a.Id equals c.Id into lc
                       from c in lc.DefaultIfEmpty()
                       where c.Name == "abc"
                       select new
                       {
                           //你要查的字段
                       };

c.name其实是可以放在where里的,结果一样。你要是觉得这样不好,那还可以分部写,先过滤c并放到集合,然后在联集合。

龙行天涯 | 园豆:1794 (小虾三级) | 2017-06-21 18:00
0

join后面语法提示必须跟on  这里直接写where会报错,有什么方法解决吗

Hsyi | 园豆:201 (菜鸟二级) | 2019-04-28 10:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册