在Linq to Entity 中使用lambda表达式来实现Left Join和Join
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 Join
与Inner 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相关推荐
- LINQ中的Lambda表达式
Lambda Expressions in LINQ 在第12章,我提到可以用lambda表达式定义内联的委托定义.在如下表达式中: customer => customer.FirstName ...
- Linq to Entity中连接两个数据库时要注意的问题
Linq to Entity中连接两个数据库时要注意的问题 今天大学同学问了我一个问题,Linq to Entity中连接两个数据库时,报错"指定的 LINQ 表达式包含对与不同上下文关联的 ...
- Python中的Lambda表达式
Lambda表达式 (Lambda Expressions) Lambda Expressions are ideally used when we need to do something simp ...
- 什么是C ++ 11中的lambda表达式?
本文翻译自:What is a lambda expression in C++11? What is a lambda expression in C++11? 什么是C ++ 11中的lambda ...
- C++中的Lambda表达式详解
函数对象与Lambdas 你编写代码时,尤其是使用 STL 算法时,可能会使用函数指针和函数对象来解决问题和执行计算.函数指针和函数对象各有利弊.例如,函数指针具有最低的语法开销,但不保持范围内的状态 ...
- android studio lambda插件,在Android Studio中使用Lambda表达式(retrolambda)
在Android Studio中使用Lambda表达式 要在Android Studio中使用Lambda表达式,需要借助一个gradle插件来完成. A gradle plugin for gett ...
- nashorn预编译_Java 8:在新的Nashorn JS引擎中编译Lambda表达式
nashorn预编译 在最近的一篇文章中,我了解了Java 8和Scala如何实现Lambda表达式. 众所周知,Java 8不仅引入了对Javac编译器的改进,而且还引入了全新的解决方案-Nasho ...
- Java 8:在新的Nashorn JS引擎中编译Lambda表达式
在最近的一篇文章中,我了解了Java 8和Scala如何实现Lambda表达式. 众所周知,Java 8不仅引入了对Javac编译器的改进,而且还引入了全新的解决方案-Nashorn. 这个新引擎旨在 ...
- Java 8中使用Lambda表达式的策略模式
策略模式是" 设计模式:可重用对象的元素"书中的模式之一 . 本书所述的策略模式的意图是: 定义一系列算法,封装每个算法,并使它们可互换. 策略使算法独立于使用该算法的客户端而变化 ...
最新文章
- pixhawk/px4如何获取及使用传感器数据
- DP(优化) UVALive 6073 Math Magic
- Kafka:常用命令
- AgileEAS.NET 4.0重构裁剪,新的ORM、支持Linq,正式支持WPF,开放更多的接口
- HTML 5 aside 标签
- vue组件内数值做watch监听,首次监听不到的问题
- 3G牌照发放脚步渐近 三大运营商提速布局3G
- 电脑故障速查方法集萃
- Spring boot 与 Spring MVC
- 桌面小部件Widget
- flutter编译遇到unknown revision or path not in the working tree的错误
- vmware-vmx.exe无法结束进程, 关闭Hyper-v虚拟服务
- dw网页设计期末设计一个网页_《网页设计与制作Dreamweaver》期末考试试题
- QQ三方登录之资料审核
- 数字图像处理篇(7)角点检测
- 设置VSCode编辑器、终端字体为微软雅黑Microsoft Yahei,字号大小为11像素
- 乐清高考2021成绩查询,2021年乐清高考状元名单公布,乐清文理科状元是谁多少分...
- 验证性分析---相关假设检验
- 读取xlsx文件错误:xlrd.biffh.XLRDError: Excel xlsx file; not supported
- 物联网开发智慧城镇管理平台开发