`
sangei
  • 浏览: 329035 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Linq的链接

阅读更多

注意:如果是外链接,是将join后面的表into到一个新的表里,而不是将join的结果集放在新的表里。因此新的临时表有可能为空,用用DefaultIfEmpty取得,其中的每一行也要判断是否为空。(==null)

 

1、左连接:

var LeftJoin = from emp in ListOfEmployees
join dept in ListOfDepartment
on emp.DeptID equals dept.ID into JoinedEmpDept
from dept in JoinedEmpDept.DefaultIfEmpty()
select new                        
{
EmployeeName = emp.Name,
DepartmentName = dept != null ? dept.Name : null                        
};

 

2、右连接:

var RightJoin = from dept in ListOfDepartment
join employee in ListOfEmployees
on dept.ID equals employee.DeptID into joinDeptEmp
from employee in joinDeptEmp.DefaultIfEmpty()
select new                          
{
EmployeeName = employee != null ? employee.Name : null,
DepartmentName = dept.Name
};

 

3、内连接:

 var query = from t in entitiy.TB_GCGL_ADA_USER
                 join p in entitiy.TB_GCGL_ZY_ZYK
                 on t.ETPRS_CODE equals p.ETPRS_CODE

                 select new TB_USER_ZYK
                 {
                    USER_ID = t.USER_ID,
                    USER_NAME = t.USER_NAME,
                    USER_PASSWORD = t.USER_PASSWORD,

                 };

 

use Test
Createtable Student(
ID
intidentity(1,1) primarykey,
[Name]nvarchar(50) notnull
)

CreateTable Book(
ID
intidentity(1,1) primarykey,
[Name]nvarchar(50)notnull,
StudentID
intnotnull
)

insertinto Student values('张三')
insertinto Student values('李四')
insertinto Student values('王五')
select*from student

--张三借的书
insertinto Book values('红楼',1)
insertinto Book values('大话红楼',1)

--李四借的书
insertinto Book values('三国',2)

--王五没借书

--一本错误的记录
insertinto Book values('错误时怎样练成的',111)

--左连接
select s.name,b.name from student as s
leftjoin Book as b on s.id=b.studentid

--右连接
select s.name,b.name from student as s
rightjoin Book as b on s.id=b.studentid
复制代码

 

要用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

};

 

分享到:
评论

相关推荐

    WCF实现Linq+Winform架构数据库开发Demo

    实体层采用linq to sql,客户端winform实现增删查功能,服务端用WCF框架,适用于WCF学习数据库开发。 有问题可以留言 http://blog.csdn.net/quan278905570

    LINQ中文版文档,LINQ 入门,LINQ 学习,LINQ编程指南

    包含指向说明如何使用 LINQ to XML 的主题的链接,此功能可提供文档对象模型 (DOM) 的内存中文档修改 功能,并且支持 LINQ 查询表达式。 9.LINQ to ADO.NET(门户页) 提供 <token>linq_dataset</token> 和 <token>...

    数据库链接 linq

    通过linq进行数据库链接,并能对数据库进行增删改和查询

    LINQ中文学习手册及学习网站

    内附学习推荐网站。 一个是语言集成查询.pdf,内容简介如下: ...包含指向说明如何使用 LINQ to XML 的主题的链接,此功能可提供文档对象模型 (DOM) 的内存中文档修改 功能,并且支持 LINQ 查询表达式。

    linq中文版资料(C#).rar

    包含指向说明如何使用 LINQ to XML 的主题的链接,此功能可提供文档对象模型 (DOM) 的内存中文档修改 功能,并且支持 LINQ 查询表达式。 9.LINQ to ADO.NET(门户页) 提供 <token>linq_dataset</token> 和 <token>...

    难得的学习LINQ的中文资料,很全很详细,包内包括两个文档

    包含指向说明如何使用 LINQ to XML 的主题的链接,此功能可提供文档对象模型 (DOM) 的内存中文档修改 功能,并且支持 LINQ 查询表达式。 9.LINQ to ADO.NET(门户页) 提供 <token>linq_dataset</token> 和 <token>...

    vs中用DbLinq 生成MySql的Linq to SQL实例

    微软的Linq to SQL只支持Sql Server,这里是用DbLinq 生成MySql的Linq to SQL实例。做了个bat文件,一键搞定。具体运用有详细说明和调用文件。

    LINQ编程技术内幕

    资源名称:LINQ编程技术内幕资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    LINQ中文版文档(入门应用教程)

    包含指向说明如何使用 LINQ to XML 的主题的链接,此功能可提供文档对象模型 (DOM) 的内存中文档修改 功能,并且支持 LINQ 查询表达式。 9.LINQ to ADO.NET(门户页) 提供 <token>linq_dataset</token> 和 <token>...

    100个linq例子

    本文摘抄自Microsoft的MSDN网站,因为原文不方便快速阅读和学习,故此调整如下。本文所有权利归Microsoft公司所有。如果您觉得本文侵犯了您的著作权,请来信...所有的代码运行结果请点击代码上的链接,到MSDN网站去看。

    anlinq:具有所有需要的列表推导式的轻量级 LINQ-like python 模块

    安临清AnLinq 是一个 Python 模块,它提供类似于用于列表推导式的 .NET LINQ 链接方法的功能。 当前项目状态: 代码:就绪并兼容 2.x 和 3.x python 版本测试: 80% 覆盖参考:适用于所有方法的有意义的 reST 文档...

    Linq实例

    NULL 博文链接:https://20444465.iteye.com/blog/1124898

    go-linq:Go中的.NET LINQ功能

    围棋 强大的Go语言集成查询(LINQ)库。 用香草Go语言编写,没有依赖项! 使用迭代器模式完成延迟评估 可同时使用 支持通用功能,使您的代码更...使用就像链接方法一样简单: From(slice) .Where(predicate) .Selec

    Linq中文版帮助文档(.chm文件)

    1、特别注意:如果下载打不发现链接失效的,请先用压缩文件进行压缩,然后再压缩文件中打开,即可阅读 2、中文版帮助文档 3、本资料是由Taven整理的,感觉非常棒,分享给大家,喜欢大家喜欢。

    C#连接数据库 —— (一)实体框架(EF)的创建 (Linq To EF)

    Linq 的语法使用示例如下文章(Lambda表达式): C#连接数据库 —— (二)Linq To EF 的 lambda表达式使用 ,增删查改、判断、分组、排序 实体框架(EF)的创建 选择数据模型项目,并取名添加: 原创文章 64获赞 ...

    linq以及ORM与多线程基础知识

    主要是C# 数据库操作基础内容,linq to sql ORM框架以及EF体系结构,内容里有一些附件不能一并上传,不过有问题可以自己动手搜索单个理解也许更有成效。本人推荐C#链接数据库使用EF模型即可。需要帮助可以添加群 ,...

    linq2db.EntityFrameworkCore:将Linq To DB的功能带到Entity Framework Core项目

    跨数据库/链接服务器查询。 全文搜索扩展 许多扩展涵盖了ANSI SQL 如何使用 在您的代码中,您需要使用以下调用来初始化集成: LinqToDBForEFTools . Initialize (); 之后,您只需调用LINQ To DB提供的DbContext和...

    Linq to sql示例

    此文档为简单的C#高级编程示例,主要设计Linq to sql 的链接,很适合初学者查看

    LINQ-Async:用于异步任务的C#LINQ异步扩展方法库

    LINQ-Async允许您链接异步任务并使用流畅的API命令异步谓词。 特征 OrderByPredicateCompletion 同时启动Predicate OrderByCompletion 选择结果 下载 PM> Install-Package Z.Linq.Async LINQ异步扩展 问题 您要...

    LINQ与DLR的Expression tree(4):创建静态类型的LINQ表达式树节点

    NULL 博文链接:https://rednaxelafx.iteye.com/blog/247270

Global site tag (gtag.js) - Google Analytics