`
sangei
  • 浏览: 335698 次
  • 性别: 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>...

    System.Linq.dll 让.net2.0也可以使用Linq

    为了解决这个问题,开发者可以借助`System.Linq.dll`这个动态链接库,将LINQ的功能引入到.NET 2.0的环境中。 `System.Linq.dll`是.NET Framework 3.5及以上版本的一部分,它包含了实现LINQ所需的核心类和接口。这个...

    数据库链接 linq

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

    Linq中文帮助文档

    此外,“打开方式.htm”可能是关于如何查看和使用这些PDF文档的指南,而“爱书吧-2万本图书免费下载.url”可能是一个链接,指向更多免费的IT图书资源。 通过深入学习和实践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实例,入门例子

    - `最新Asp.Net源码下载.url`指向一个URL,可能是更多ASP.NET源码的下载链接。 通过这个项目,学习者可以了解到如何在三层架构中使用LINQ,理解如何在业务逻辑层中编写查询,以及如何在数据访问层中使用LINQ与...

    LINQ to SQL可视化调试工具

    "SqlServerQueryVisualizer.dll"是这个工具的核心组件,它是一个动态链接库文件,包含实现可视化查询转换功能的代码。在Visual Studio中,开发者可以通过引用这个组件,将其实现为一个调试插件。在bin\debug文件夹下...

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

    在.NET开发环境中,微软的Linq to SQL是一个强大的工具,它允许开发者使用C#或VB.NET的LINQ(Language Integrated Query)语法与SQL Server数据库进行交互。然而,它并不直接支持MySQL这样的非SQL Server数据库。...

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

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

    vs2008的Linq用法介绍

    通过阅读提供的博客链接(),你可以深入学习更多关于LINQ在VS2008中的具体用法和示例,包括如何在实际项目中应用这些概念。此外,还可以参考微软官方文档和其他在线教程,以进一步提升你的LINQ技能。

    linq示例(源自微软MSDN)

    使用LINQ,开发者可以轻松地解析RSS feed,提取标题、链接、发布日期等信息,甚至可以创建RSS阅读器应用。 **Reflector工具** Reflector是一款反编译工具,允许开发者查看.NET程序集的内部工作原理,包括查看IL...

    LINQ编程技术内幕

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

    mvc+linq网站源码

    "程序员天空"可能是一个网站或者博客的名称,提供此源码的出处,而提供的链接"www.codersky.net"可能是该资源的在线平台,可能包含更多相关教程和讨论。 **知识点详解** 1. **MVC架构**:MVC模式是一种软件设计...

    使用LINQ查询(ASP.NET开发大全

    LINQ(Language Integrated Query...文档末尾提到的“***抱米花”很可能是原作者或文档出处的网站链接,用于感谢原作者或者指出文档的原始出处。由于文档内容被部分OCR处理,某些字可能有误,需要读者自行理解并修正。

    vs2008的Linq转为sql分页例子

    - 最新Asp.Net源码下载.url:可能是指向更多ASP.NET源码下载的链接。 - Tool、DAL、Model、DB_51aspx:这些可能是项目中的文件夹,分别存储工具类、数据访问层(DAL)、模型类以及数据库相关的文件。 - Web:可能是...

    System.linq.Dynamic

    在提供的文件中,`System.Linq.Dynamic.dll`是包含动态查询库实现的动态链接库文件,可以直接在项目中引用以使用其功能。而`Microsoft Public License (Ms-PL).pdf`则是该库的许可协议,它遵循的是Microsoft Public ...

    NHibernate.Linq-1.0.0.GA-bin.zip

    3. NHibernate.Linq.dll:这是实际的DLL动态链接库文件,包含了NHibernate.Linq的所有实现。在.NET项目中,需要引用这个库才能使用NHibernate.Linq的功能。开发者可以将这个文件添加到项目的引用目录,然后在代码中...

    LinQ 分页 填删改查 asp.net.mvc

    在ASP.NET MVC中,可以创建一个强类型视图,接收`IQueryable`类型的用户集合,并使用`@Html.Pager`辅助方法实现分页链接。 总的来说,`LinQ`在ASP.NET MVC中的应用简化了数据库操作,使得开发者能更专注于业务逻辑...

Global site tag (gtag.js) - Google Analytics