C# LINQ用方法语法怎么实现SQL中的left join 和 right join这种查询?

C# LINQ用方法语法怎么实现SQL中的left join 和 right join这种查询?

阅读 6.8k
3 个回答
//inner join
from a in StoreInCities
join b in CityInfo on a.CityId equals b.ID into c
select c

//left join   (right join只是顺序换一下)
from a in StoreInCities
join b in CityInfo on a.CityId equals b.ID into c
//DefaultIfEmpty()是为了达到左连接的目的,不使用DefaultIfEmpty(),相当于是inner join
from d in c.DefaultIfEmpty()
select d

//上面的left join等价于下面的方法语法
StoreInCities
   .GroupJoin (
      CityInfo, 
      a => a.CityId, 
      b => b.ID, 
      (a, c) => 
         new  
         {
            a = a, 
            c = c
         }
   )
   .SelectMany (
      temp0 => temp0.c.DefaultIfEmpty (), 
      (temp0, d) => d
   )


//推荐一个软件,sql,ling方法和ling表达式语法各种切换的软件(linqpad)

..................................

GroupJoin

右连接就是把右表写在左边

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进