先看一个最简单的inner join,在读取Student表时inner join Class表取的对应的Class信息:

static void Main(string[] args)
{
using (var writer = new StreamWriter(WatchSqlPath, false, Encoding.UTF8))
{
using (DbAppDataContext db = new DbAppDataContext())
{
db.Log = writer; //inner join
var query = from s in db.Students
join c in db.Classes on s.ClassID equals c.ClassID
where c.ClassID ==
select new
{
ClassID = s.ClassID,
ClassName = c.ClassName,
Student = new
{
Name = s.Name,
ID = s.StudentID
}
}; foreach (var item in query)
{
Console.WriteLine("{0} {1} {2}", item.ClassID, item.ClassName, item.Student.Name);
}
}
} Console.ReadLine();
}

特别简单,就不贴sql了,继续看outer join:

static void Main(string[] args)
{
using (var writer = new StreamWriter(WatchSqlPath, false, Encoding.UTF8))
{
using (DbAppDataContext db = new DbAppDataContext())
{
db.Log = writer; //left outer join
var query = from s in db.Students
join c in db.Classes on s.ClassID equals c.ClassID into gc
from gci in gc.DefaultIfEmpty()
select new
{
ClassID = s.ClassID,
ClassName = gci.ClassName,
Student = new
{
Name = s.Name,
ID = s.StudentID
}
};
foreach (var item in query)
{
Console.WriteLine("{0} {1} {2}", item.ClassID, item.ClassName, item.Student.Name);
}
}
} Console.ReadLine();
}

Outer join时必须将join后的表into到一个新的变量gc中,然后要用gc.DefaultIfEmpty()表示外连接。

linq to sql相关随笔:

1.  从CUD开始,如何使用LINQ  to SQL插入、修改、删除数据

2.  查询 使用LINQ to SQL做简单查询

3.  查询 延迟加载与立即加载,使用LoadWith和AssociateWith

4.  查询 inner join,left outer join

5.  Linq to SQL中的聚合grouping having

6.  LINQ to SQL查询优化,需要忧虑性能吗?

LINQ to SQL系列四 使用inner join,outer join的更多相关文章

  1. (转载)一步一步学Linq to sql系列文章

    现在Linq to sql的资料还不是很多,本人水平有限,如果有错或者误导请指出,谢谢. 一步一步学Linq to sql(一):预备知识 一步一步学Linq to sql(二):DataContex ...

  2. INNER JOIN & OUTER JOIN

    INNER JOIN & OUTER JOIN 参考:sql

  3. LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据

    http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...

  4. LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据 (转)

    http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...

  5. LINQ to Sql系列一 增,删,改

    首先,我们来了解一下LINQ to sql 是什么,我想从以下几点来做说明. 1,LINQ是从.net framework 3.0开始引入的的语言特性,主要是用来对集合数据进行操作的.2,LINQ t ...

  6. LINQ to Sql系列二 简单查询和联接查询

    这一篇文章主要总结LINQ to sql的简单查询(单表查询)和联接查询(多表查询) 单表查询 需求是我们要输出TClass表中的结果.使用了from-in-select语句,代码如下: public ...

  7. 一步一步学Linq to sql(四):查询句法

    select 描述:查询顾客的公司名.地址信息 查询句法: var 构建匿名类型1 = from c in ctx.Customers select new { 公司名 = c.CompanyName ...

  8. Linq to SQL 语法查询(子查询 & in操作 & join )

    var 子查询 = from c in ctx.Customers                    where                        (from o in ctx.Ord ...

  9. SQL系列(十)—— 联结(join)

    在数据库设计中,基本上都是根实体ER关系和范式设计多张表.这样更能设计出更合理.紧凑的表结构,提高有效数据存储,数据的管理维护更简便,也提高了库表的伸缩性. 但是事物总是平衡的,在很多场景中单张表的数 ...

随机推荐

  1. 二分查找算法java实现

    今天看了一下JDK里面的二分法是实现,觉得有点小问题.二分法的实现有多种今天就给大家分享两种.一种是递归方式的,一种是非递归方式的.先来看看一些基础的东西. 1.算法概念. 二分查找算法也称为折半搜索 ...

  2. MLUtils.loadLibSVMFile

    import org.apache.spark.mllib.util.MLUtils// Load and parse the data file. val data = MLUtils.loadLi ...

  3. http页面转发和重定向的区别

    一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下:request.getRequestDispatcher("new.jsp").forward(request ...

  4. 如何"格式化"用过的磁带,让他被新磁带机重复利用

    1. 2.  套用翁磊的话: 勾上表示和之前的磁带信息进行协商(但是会失败), 不勾则表示强行擦除.

  5. [转自51CTO]ITIL与ISO20000的关系

    ITIL它不是一个服务管理标准,而更应该说是一种结构化的方法或流程框架.基于这种方法和框架,已经有越来越多的IT服务管理标准被开发出来了.在这些基于ITIL的IT服务管理标准中,最突出的要属英国标准B ...

  6. PHP 开发 APP 接口 学习笔记与总结 - JSON 结合 XML 方式封装通信接口

    要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php < ...

  7. UE4.7的IOS发布和调试的相关问题

    UE4.7以后正式源码免费了,正好最近工作也在做这部分,ue4的官方文档虽然有一部分ios平台的资料,那也只是通过编辑器来发布或预览一类,但手游程序员都知道,一些cpu和gpu性能上的调试是在所难免的 ...

  8. win7系统安装FAQ

    安装失败: 直接重启后进入原系统 蓝屏 提示失败 开机F1进入BIOS-〉config-〉Serial ATA-〉将硬盘模式从AHCI改为Compatibility.这项很重要的.可以解决以上问题:

  9. node.js 初体验

    node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...

  10. 浅析php学习的路线图

    一直都想走上码农的道路,奈何当年没有学好.一直与码农无缘.现在又想做一些码农就下了一套某个培训机构的php视频来看.希望能走上码农的道路     1.php初级教程 初级教程主要的页面设置的,就是 h ...