linq to entity 左连接 右连接 以及内连接写法的区别
左连右连还是内连这个其实你不需要关心。只需要根据实体的映射关系写查询,框架会自动帮你生成的。 至于linq查询语法与扩展方法的效率,应该是一样的,比如:
var users=(from u in db.Users where u.UserRoleId==1 select u) .ToList();
var users2=db.Users.Where(u=>u.UserRoleId==1).ToList();
这两句查询实际上是等效的。
inner join:
var =from x in db.T1
join y in db.T2
on x.yId equals y.Id
select x;
left join:
var =from x in db.T1
join y in db.T2
on x.yId equals y.Id into temp
from y in temp.DefalutIfEmpty()
select new{x.Id,Name=y==null "":y.Name};
right join 原理同 left join
至于效率,lamda表达式同标准表达式
LINQ TO EF 用 from x in temp.DefalutIfEmpty() 不是百分百会执行左连接的
主要要看 关系的配置 以及数据库那边 是否为空 外键
linq中怎么实现多条件关联的左连接???
sql语句:
SELECT * FROM T_COURSE a left join T_USER_COURSE_RECORD tucr ON a.COURSE_ID=tucr.COURSE_ID
and tucr.[USER_ID]=@userId
userId是传入的参数
var data = from c in db.T_COURSE
join u in db.T_USER_COURSE_RECORD
on new { COURSE_ID=(long?)c.COURSE_ID, USER_ID=(long?)userId }
equals new { COURSE_ID=u.COURSE_ID,USER_ID=u.USER_ID }
into x
from cx in x.DefaultIfEmpty()
select new
{
c.COURSE_NAME,
cx.COURSE_ID,
USER_COURSE_ID = cx == null ? :cx.USER_COURSE_ID,
cx.USER_ID,
SCORE = (cx == null | cx.SCORE == -) ? "未完成" : cx.SCORE.ToString(),
};
return data;
特别是这句:
on new { COURSE_ID=(long?)c.COURSE_ID, USER_ID=(long?)userId }
equals new { COURSE_ID=u.COURSE_ID,USER_ID=u.USER_ID } 你应该确保组合键对应值的返回类型是一致的
long 对 long?就会产生错误
另外还可以这么写,更简便:
var data = from c in db.T_COURSE
join u in db.T_USER_COURSE_RECORD.Where(x=>x.USER_ID ==userId)
on c.COURSE_ID equals u.COURSE_ID into x
from cx in x.DefaultIfEmpty()
select new
{
c.COURSE_NAME,
COURSE_ID=cx,
USER_COURSE_ID=cx==null?:cx.USER_COURSE_ID,
USER_ID= cx,
SCORE =( cx==null|cx.SCORE == -) ? "未完成" : cx.SCORE.ToString()
};
http://blog.csdn.net/whw6263989/article/details/7877285
linq to entity 左连接 右连接 以及内连接写法的区别的更多相关文章
- my sql 下左连接 右链接、内连接等应用,INNER JOIN LEFT JOIN RIGHT JOIN
1.数据准备 建两个表格: create table student (idstu int, namestu ) ); ,"张三")(,"李四"),(,&quo ...
- SQLServer学习笔记<> 表连接查询----交叉连接、内连接、左连接、右连接
(1)交叉连接(cross join)即我们所说的笛卡尔积.查询出满足两张表所有的记录数,A(3条记录),B(9条记录),A*B(27条记录). 比如:雇员表(HR.employees)和货运公司(S ...
- 数据库左连接left join、右连接right join、内连接inner join on 及 where条件查询的区别
join on 与 where 条件的执行先后顺序: join on 条件先执行,where条件后执行:join on的条件在连接表时过滤,而where则是在生成中间表后对临时表过滤 left joi ...
- SQL Server中的连接查询【内连接,左连接,右连接,。。。】
在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据 ...
- Oracle左连接,右连接
Oracle左连接,右连接 数据表的连接有: 1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制 ...
- SQL左连接右连接
假设有A,B两个表. 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 ...
- Sql中的内连接,左连接以及右连接区别
转自:http://pangaoyuan.javaeye.com/blog/713177 有两个表A和表B. 表A结构如下: Aid:int:标识种子,主键,自增ID Aname:varchar 数据 ...
- core的 Linq基本使用,简单模拟数据库多表的左右内连接的测试
1:先看效果: 2:部分代码截图 3:全部代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 n ...
- 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接(转)
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...
随机推荐
- java泛型与object的比较
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下 ...
- Git master branch has no upstream branch的解决
Git master branch has no upstream branch的解决 在push代码时,出现“git master branch has no upstream branch”问题的 ...
- Java Web之数据库连接池
数据库连接池 一.数据库连接池 1. 数据库连接池就是存放数据库连接(Connection)的集合 2. 我们获取一个数据库连接是一个相对很麻烦的过程,如果我们获取一个数据库连接,使用一次以后就给它关 ...
- left jion on和where条件的区别
1.on是在生成临时表时()起作用,而且不管on中的条件是否为真,都会返回(left join)左边所有的数据,如果不匹配也是返回空. 2.where 是在生成了临时表后,再对表进行过滤 个人理解:先 ...
- 解读人:林山云,Proteomic Identification of Protein Glutathionylation in Cardiomyocytes(心肌细胞蛋白质谷胱甘肽修饰的蛋白质组鉴定)
发表时间:(2019年4月) IF:3.950 单位:韦恩州立大学化学系 物种:小鼠心肌细胞 技术:谷胱甘肽修饰蛋白组学 一. 概述: 本研究采用化学选择性蛋白组学方法,鉴定出过氧化物诱导HL-1小鼠 ...
- 本地访问Vmware虚机Web网站
情况:公司是域环境,Vmware网络设置的是NAT连接模式,里外装的都是Windows,虚机网络IP地址是自动获取的. 查看: 1.虚机Ping本地的IP地址可以Ping通: 2.本地Ping虚机的I ...
- CodeForces - 124B-Permutations(DFS)
You are given n k-digit integers. You have to rearrange the digits in the integers so that the diffe ...
- hdu Minimum Inversion Number(逆序数的小知识与线段树)
飞! 题解 首先,求逆序数对的思路: 1.得到整个数列后,从前往后扫,统计比a[i]小的,在a[i]后面的有多少个 这样做的话,应该是只有n2的暴力作法,没想到更好的方法 2.统计a[i]前面的,且比 ...
- Educational Codeforces Round 13 A
Description Johny likes numbers n and k very much. Now Johny wants to find the smallest integer x gr ...
- Go语言关键字之1--range
https://blog.csdn.net/iamlihongwei/article/details/78842857 https://studygolang.com/articles/1952 ht ...