来源 https://www.cnblogs.com/xinjian/archive/2010/11/17/1879959.html

  准备一些测试数据,如下:

  1.  
  2. use Test
  3. Create table Student(
  4. ID int identity(1,1) primary key,
  5. [Name] nvarchar(50) not null
  6. )
  7.  
  8. Create Table Book(
  9. ID int identity(1,1) primary key,
  10. [Name] nvarchar(50)not null,
  11. StudentID int not null
  12. )
  13.  
  14. insert into Student values('张三')
  15. insert into Student values('李四')
  16. insert into Student values('王五')
  17. select * from student
  18.  
  19. --张三借的书
  20. insert into Book values('红楼',1)
  21. insert into Book values('大话红楼',1)
  22.  
  23. --李四借的书
  24. insert into Book values('三国',2)
  25.  
  26. --王五没借书
  27.  
  28. --一本错误的记录
  29. insert into Book values('错误时怎样练成的',111)
  30.  
  31. --左连接
  32. select s.name,b.name from student as s
  33. left join Book as b on s.id=b.studentid
  34.  
  35. --右连接
  36. select s.name,b.name from student as s
  37. right join Book as b on s.id=b.studentid

要用Linq实现左连接,写法如下

  1.  
  2. DataClasses1DataContext db = new DataClasses1DataContext();
  3. var leftJoinSql = from student in db.Student
  4. join book in db.Book on student.ID equals book.StudentID into temp
  5. from tt in temp.DefaultIfEmpty()
  6. select new
  7. {
  8. sname= student.Name,
  9. bname = tt==null?"":tt.Name//这里主要第二个集合有可能为空。需要判断
  10. };

用Linq实现右连接,写法如下

  1.  
  2. DataClasses1DataContext db=new DataClasses1DataContext();
  3. var rightJoinSql = from book in db.Book
  4. join stu in db.Student on book.StudentID equals stu.ID into joinTemp
  5. from tmp in joinTemp.DefaultIfEmpty()
  6. select new {
  7. sname=tmp==null?"":tmp.Name,
  8. bname=book.Name
  9.  
  10. };

三表左连接

匿名类

  1. var list = (
  2. from u in dc.userinfos
  3. join j in dc.jobs on u.job equals j.jid into j_join
  4. from x in j_join.DefaultIfEmpty()
  5. join c in dc.cities on u.city equals c.cid into c_join
  6. from v in c_join.DefaultIfEmpty()
  7. select new
  8. {
  9. id = u.id,
  10. name = u.name,
  11. jname = x.jname,
  12. cname = v.cname,
  13. /*u1=u,x1=x,v1=v*/
  14. //不要用对象的方式 因为对象可能为null那么对象.属性就会抛异常
  15. }
  16. ).ToList();
  17.  
  18. for (var i = ; i < list.Count(); i++)
  19. {
  20. Console.WriteLine(list[i].name + '\t' + list[i].jname + '\t' + list[i].cname); //字段为null不报异常
  21. //Console.WriteLine(list[i].u1.name+'\t'+list[i].x1.jname+'\t'+list[i].v1.cname+"\r\n"); //对象x1 v1 有可能为null 抛异常
  22. }
  23. Console.ReadLine();

模型类

linq join 左连接 leftjoin 多个on条件 where 条件

 
  1. var haveChange = from newScore in newScoreList
  2. join oldScore in oldScoreList
  3. on
  4. new{newScore.ExamId,newScore.StudentId,newScore.Subject,newScore.ClassId} equals
  5. new{oldScore.ExamId,oldScore.StudentId,oldScore.Subject,oldScore.ClassId}
  6. where newScore.Score != oldScore.Score
  7. select newScore;
  1. var query= from cc in COPTC
  2. join cd in COPTD
  3. on new {cc.TC001,cc.TC002} equals new{ cd.TD001,cd.TD002}
  4. into m
  5. from n in m.DefaultIfEmpty()
  6. join ma in MOCTA
  7. on new{cd.TD001, cd.TD002,cd.TD003 } equals new{ ma.TA026,ma.TA027,ma.TA028}
  8.  
  9. where new char[]{'Y','y'}.Contains(ma.TA013)
  10. && new char[]{'Y','y'}.Contains(cc.TC027)
  11. && Convert.ToDateTime(ma.TA003) > Convert.ToDateTime("2010-07-20")
  12. && Convert.ToDateTime(ma.TA003) < Convert.ToDateTime("2010-12-31")
  13. select new
  14. {
  15. cc,
  16. cd
  17. };
 
 

参考资料:

https://www.cnblogs.com/weixing/p/4447927.html

https://www.cnblogs.com/joeylee/p/3711654.html

http://developer.51cto.com/art/200909/152189.htm

http://hi.baidu.com/thinsoft/blog/item/83fb1e9089cc7186a877a4b1.html

http://apps.hi.baidu.com/share/detail/12540006

http://www.winu.cn/space-14160-do-blog-id-25172.html

Linq Left Join;linq左连接 (转载)的更多相关文章

  1. Linq 和 SQL的左连接、右连接、内链接

    在我们工作中表连接是很常用的,但常用的有这三种连接方式:左连接.右连接.内链接 在本章节中讲的是1.如何在Linq中使用左连接,右连接,内连接. 2.三种连接之间的特点在哪? 3.Linq的三种连接语 ...

  2. sql语句中的join连接(左连接、右连接、全连接、内连接)

    内部连接(inner join): select * from d_user a inner join D_ORGANIZATION b on a.COMPANY_XID=b.ID  内部链接也是排他 ...

  3. sql左连接,右连接,内连接

    1.sql查询时什么叫左连接和右连接    左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少.    左或 ...

  4. 【MySQL】MySQL内连接,左连接,右连接查询

    概念 INNER JOIN(内连接):获取两个表中字段匹配关系的记录.也就是只会返回共有的内容. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN(右 ...

  5. EF Linq中的左连接Left Join查询

    linq中的join是inner join内连接,就是当两个表中有一个表对应的数据没有的时候那个关联就不成立. 比如表A B的数据如下 from a in A join b in B on a.BId ...

  6. Linq 左连接 left join

    Suppose you have a tblRoom and tblUserInfo. Now, you need to select all the rooms regardless of whet ...

  7. LINQ的左连接、右连接、内连接和Lamda表达式实现Left join

    1.左连接: var LeftJoin = from t1 in l1join t2 in l2on t1.ID equals t2.ID into Joinedt12from t3 in Joine ...

  8. Linq连接查询之左连接、右连接、内连接、全连接、交叉连接、Union合并、Concat连接、Intersect相交、Except与非查询

    内连接查询 内连接与SqL中inner join一样,即找出两个序列的交集 Model1Container model = new Model1Container(); //内连接 var query ...

  9. Linq实现左连接、右连接

    --一本错误的记录 insert into Book values('错误时怎样练成的',111)   --左连接 select s.name,b.name from student as s lef ...

随机推荐

  1. 【转载】 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "0" (---------tensorflow中设置GPU可见顺序和选取)

    原文地址: https://blog.csdn.net/Jamesjjjjj/article/details/83414680 ------------------------------------ ...

  2. SpringBoot处理异常方式

    SpringBoot提供了多种处理异常方式,以下为常用的几种 1. 自定义错误异常页面 SpringBoot默认的处理异常的机制:SpringBoot默认的已经提供了一套处理异常的机制.一旦程序中出现 ...

  3. 转载: 我如何使用 Django + Vue.js 快速构建项目

    原文链接: https://www.ctolib.com/topics-109796.html 正文引用如下 引言 大U的技术课堂 的新年第一课,祝大家新的一年好好学习,天天向上:) 本篇将手把手教你 ...

  4. [Windows] - 在 Windows Server 2019 找不到无线网卡 之解决

    硬件:Intel® Dual Band Wireless-AC 3165系统:Windows Server 2019 问题:新系统安装完成后,无法找到无线网卡 尝试:适用于 Windows Serve ...

  5. XML中的XPATH和DTD

    大家好,乐字节小乐又来了,上次给大家说道的是XML解析,这次接着讲述XML文档中的语言:XPATH.DTD 一.先来说说XPATH 1.XPATH 概念 XPath 是一门在 XML 文档中查找信息的 ...

  6. CORS解决跨域问题(403问题)

    1.什么是跨域问题? 跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是用当前页同域名同端口的路径,这能有效的阻止跨站攻击. 2.跨域问题出现的条件: 1.跨域问题是a ...

  7. 在Vcl和FireMonkey应用程序中启用TXMLDocument 的XPath(selectNode,selectNodes)方法

    该TXMLDocument的类让你来操作VCL和FireMonkey应用程序的XML文件,但这个类没有实现直接的方式来调用XPath的相关方法(selectNode,的selectNodes),所以你 ...

  8. 读文件时出现这个错误 'utf-8' codec can't decode byte 0xba in position 21: invalid start byte

    ''' file2 文件内容: 很任性wheniwasyoung ''' 源代码: f = open("file2",'r',encoding="utf-8") ...

  9. 解决kali安装成功后没有声音的问题

    Kali Linux系统默认状态下,root用户是无法使用声卡的,也就没有声音.启用的方法如下: (1)在终端执行命令:systemctl --user enable pulseaudio (2)在/ ...

  10. HTML5 极简的JS函数

    页面初始化 mui框架将很多功能配置都集中在mui.init方法中,要使用某项功能,只需要在mui.init方法中完成对应参数配置即可,目前支持在mui.init方法中配置的功能包括:创建子页面.关闭 ...