1、读取用户和部门两个表的左连接:

var sg = db.Users.GroupJoin(db.Departments, u => u.DepartmentId, d => d.DepartmentId, (u,d) => new { u, d }).Select(o=>o).ToList();

注意:上面将返回所用用户信息和对应的部门信息(即用户部门ID信息缺少,那么用户列表也会显示)

2、读取指定返回列表字段的左连接信息:

 var GJoinList = db.Sys_User.GroupJoin(db.Sys_Department, u => u.DepartmentId, d => d.DepartmentId, (u,d) => new { UserId=u.UserId, Account=u.Account, RealName=u.RealName, EnabledMark=u.EnabledMark, DeleteMark=u.DeleteMark,DepartmentName = d.FirstOrDefault(x=>x.DepartmentId==u.DepartmentId).FullName}).Select(o=>o);

3、读取连接表:

var sg = db.Users.Join(db.Departments, u => u.DepartmentId, d => d.DepartmentId, (u,d) => new { u, d }).Select(o=>o).ToList();

注意:这里将只显示用户里DepartmentId和部门表里DepartmentId相等的信息,如果用户没有部门ID则此条用户信息不会显示

 var data = db.CRM_OrderDetails.Join(db.CRM_Order, d => d.OrderId, o => o.OrderId, (d, o) => new { d, o }).Select(p => new ProductsListModel() {OrderId =p.o.OrderId,OrderCode=p.o.OrderCode,CustomerName=p.o.CustomerName,ProductName=p.d.ProductName,UnitId=p.d.UnitId,Qty=p.d.Qty,Price=p.d.Price,Amount=p.d.Amount,TaxAmount=p.d.TaxAmount,TaxCostAmount=p.d.TaxCostAmount,CreateTime=p.d.CreateTime,EndTime=p.d.EndTime,Description=p.d.Description}).Where(expression).OrderBy(orderbyExpression);

Linq Left JoinInner Join Linq语法与lambda表达式

Left Join获取数据:

Linq语法如下:

var sg = (from g in dc.sgroupjoin gu in dc.sgroupuser on g.gKey equals gu.gKey into lfrom lgu in l.DefaultIfEmpty()select new { g, lgu }).ToList();

Lambda表达式如下:

var sg = dc.sgroup.GroupJoin(dc.sgroupuser, g => g.gKey, gu => gu.gKey, (g, gu) => new { g, gu }).Select(o=>o).ToList() ;

注意:
Linq 与Lambda表达式取出的结果有所不同.Linq取出的结果的记录数与Sql中的Left Join的结果相同,而Lambda表达式取出的记录数是sgroup表中的记录数,sgroupuser对应的记录是以对象集合存在于结果中

附:

下面是Inner Join:

Linq语法如下:

var sg = (from g in dc.sgroupjoin gu in dc.sgroupuser on g.gKey equals gu.gKey                  select new { g, gu }).ToList();

Lambda表达式如下:

var sg = dc.sgroup.Join(dc.sgroupuser, g => g.gKey, gu => gu.gKey, (g, gu) => new { g, gu }).Select(o=>o).ToList() ;

注意:
上面最后都用到了ToList()方法 , 用ToList()是为了一次性将数据取到本地.

在Linq to Entity 中使用lambda表达式来实现Left Join和Join相关推荐

  1. LINQ中的Lambda表达式

    Lambda Expressions in LINQ 在第12章,我提到可以用lambda表达式定义内联的委托定义.在如下表达式中: customer => customer.FirstName ...

  2. Linq to Entity中连接两个数据库时要注意的问题

    Linq to Entity中连接两个数据库时要注意的问题 今天大学同学问了我一个问题,Linq to Entity中连接两个数据库时,报错"指定的 LINQ 表达式包含对与不同上下文关联的 ...

  3. Python中的Lambda表达式

    Lambda表达式 (Lambda Expressions) Lambda Expressions are ideally used when we need to do something simp ...

  4. 什么是C ++ 11中的lambda表达式?

    本文翻译自:What is a lambda expression in C++11? What is a lambda expression in C++11? 什么是C ++ 11中的lambda ...

  5. C++中的Lambda表达式详解

    函数对象与Lambdas 你编写代码时,尤其是使用 STL 算法时,可能会使用函数指针和函数对象来解决问题和执行计算.函数指针和函数对象各有利弊.例如,函数指针具有最低的语法开销,但不保持范围内的状态 ...

  6. android studio lambda插件,在Android Studio中使用Lambda表达式(retrolambda)

    在Android Studio中使用Lambda表达式 要在Android Studio中使用Lambda表达式,需要借助一个gradle插件来完成. A gradle plugin for gett ...

  7. nashorn预编译_Java 8:在新的Nashorn JS引擎中编译Lambda表达式

    nashorn预编译 在最近的一篇文章中,我了解了Java 8和Scala如何实现Lambda表达式. 众所周知,Java 8不仅引入了对Javac编译器的改进,而且还引入了全新的解决方案-Nasho ...

  8. Java 8:在新的Nashorn JS引擎中编译Lambda表达式

    在最近的一篇文章中,我了解了Java 8和Scala如何实现Lambda表达式. 众所周知,Java 8不仅引入了对Javac编译器的改进,而且还引入了全新的解决方案-Nashorn. 这个新引擎旨在 ...

  9. Java 8中使用Lambda表达式的策略模式

    策略模式是" 设计模式:可重用对象的元素"书中的模式之一 . 本书所述的策略模式的意图是: 定义一系列算法,封装每个算法,并使它们可互换. 策略使算法独立于使用该算法的客户端而变化 ...

最新文章

  1. pixhawk/px4如何获取及使用传感器数据
  2. DP(优化) UVALive 6073 Math Magic
  3. Kafka:常用命令
  4. AgileEAS.NET 4.0重构裁剪,新的ORM、支持Linq,正式支持WPF,开放更多的接口
  5. HTML 5 aside 标签
  6. vue组件内数值做watch监听,首次监听不到的问题
  7. 3G牌照发放脚步渐近 三大运营商提速布局3G
  8. 电脑故障速查方法集萃
  9. Spring boot 与 Spring MVC
  10. 桌面小部件Widget
  11. flutter编译遇到unknown revision or path not in the working tree的错误
  12. vmware-vmx.exe无法结束进程, 关闭Hyper-v虚拟服务
  13. dw网页设计期末设计一个网页_《网页设计与制作Dreamweaver》期末考试试题
  14. QQ三方登录之资料审核
  15. 数字图像处理篇(7)角点检测
  16. 设置VSCode编辑器、终端字体为微软雅黑Microsoft Yahei,字号大小为11像素
  17. 乐清高考2021成绩查询,2021年乐清高考状元名单公布,乐清文理科状元是谁多少分...
  18. 验证性分析---相关假设检验
  19. 读取xlsx文件错误:xlrd.biffh.XLRDError: Excel xlsx file; not supported
  20. 物联网开发智慧城镇管理平台开发

热门文章

  1. 探究VR全景展示的价值
  2. 获取java项目路径_Java获取项目路径
  3. python编程炒股案例_利用python写一个炒股程序
  4. 【四圣龙神录的编程教室】第11章、用Excel制作敌人的登场数据吧
  5. ajax异步请求的三种格式
  6. 魅族M1 Note 外部应用安装停止运行
  7. 配音软件免费版哪个好?分享2款好用的配音软件帮你快速配音
  8. vue 对象继承_JS继承的实现方式
  9. linux学习笔记——gdb中的watch使用方法
  10. ipad可以用的手写笔,平板触控笔哪款好用