Linq 左联接 右联接示例
2016-04-28 16:43
197 查看
源文连接:http://www.cnblogs.com/xinjian/archive/2010/11/17/1879959.html
用Linq实现左连接,写法如下
DataClasses1DataContext db = new DataClasses1DataContext(); var leftJoinSql = from student in db.Student join book in db.Book on student.ID equals book.StudentID into temp from tt in temp.DefaultIfEmpty() select new { sname= student.Name, bname = tt==null?"":tt.Name//这里主要第二个集合有可能为空。需要判断 };
用Linq实现右连接,写法如下
DataClasses1DataContext db=new DataClasses1DataContext(); var rightJoinSql = from book in db.Book join stu in db.Student on book.StudentID equals stu.ID into joinTemp from tmp in joinTemp.DefaultIfEmpty() select new { sname=tmp==null?"":tmp.Name, bname=book.Name };
数据库示例:
use Test Create table Student( ID int identity(1,1) primary key, [Name] nvarchar(50) not null ) Create Table Book( ID int identity(1,1) primary key, [Name] nvarchar(50)not null, StudentID int not null ) insert into Student values('张三') insert into Student values('李四') insert into Student values('王五') select * from student --张三借的书 insert into Book values('红楼',1) insert into Book values('大话红楼',1) --李四借的书 insert into Book values('三国',2) --王五没借书 --一本错误的记录 insert into Book values('错误时怎样练成的',111) --左连接 select s.name,b.name from student as s left join Book as b on s.id=b.studentid --右连接 select s.name,b.name from student as s right join Book as b on s.id=b.studentid
相关文章推荐
- AngularJS中插入HTML片段
- 开启文件管理时 URI获取文件路径为null的解决方法
- 8.2016 物电学院 电气工程及其自动化 辛雅松 15050341033
- Java 8怎么了:局部套用vs闭包
- 面试题10
- iOS实现压缩图片上传功能
- HDFS基本的读写文件
- linux大文件分包压缩和批量解压命令tar
- 13、Servlet入门
- 浮点数在内存中的表示
- 15电气郄慧敏vb作业二进制的转换
- activiti 配置(一)续
- 23转化为二进制数
- 二进制
- 秒杀多线程第三篇 原子操作 Interlocked系列函数
- 【转】linux代码段,数据段,BSS段, 堆,栈
- jQuery插件写法总结以及面向对象方式写法总结
- GitHub和SourceTree入门教程
- 个人冲刺03
- 负载均衡