/**************join 练习*******************/
            //对于1对多关系
            var list =from c in ctx.T_Student
                      from s in c.T_Score
                      where c.stuName=="黄阳"
                      select s;
            //也可以间接的通过表关联其它表,这个结果和上边的查询结果相同
            var list1 = from s in ctx.T_Score
                        where s.T_Student.stuName=="黄阳"
                        select s;
            //多对多关系,他们之间的关系是1:M:1
            var list2 = from s in ctx.T_Cource
                        from c in s.T_Score
                        select new {
                            s.courceName,
                            c.score,
                            c.T_Student.stuName
                        };
            //如果表里边有隶属关系,可以使用自联结,由于表的设计不是很好,所以没有包括这种情况
            //双向链接
            var list3 = from s in ctx.T_Student
                        join t in ctx.T_Score
                        on s.stuNumber
                        equals t.stuNumber
                        into g
                        select new {
                           stuName =  s.stuName,
                           score = g.Sum(k=>k.score)               
                        };
            //三向链接
            var list4 = from s in ctx.T_Score
                        join c in ctx.T_Cource
                        on s.courceNumber
                        equals c.courceNumber into temp1
                        join t in ctx.T_Student
                        on s.stuNumber
                        equals t.stuNumber into temp2
                        select new {
                           Score = s.score,
                           Name = temp1.Count()
                        };
            //左外部链接
            var list5 = from s in ctx.T_Student
                        join c in ctx.T_Score
                        on s.stuNumber
                        equals c.stuNumber
                        into temp1
                        from k in temp1.DefaultIfEmpty()
                        select new
                        {
                            stuName = s.stuName,
                            sumScore = k.score
                        };
            //投影的let操作
            var list6 = from s in ctx.T_Student
                        join c in ctx.T_Score
                        on s.stuNumber
                        equals c.stuNumber into temp1
                        let studentInfo = s.stuName +s.stuSex
                        from k in temp1
                        select new {
                            stuNumber=s.stuNumber,
                            CoreOfStudents = k.score,
                            studentInfomation = studentInfo
                        };
                //使用组合健来表示多表之间的关系 ,这个由于表中设计时候,基本只有一个主键,没有用到联合主键  
            //一侧可为空另一侧不能为空的链接
            var list7 = from s in ctx.T_Student
                        join c in ctx.T_Score
                        on Convert.ToInt32(s.stuNumber)
                        equals (int ?)Convert.ToInt32(c.stuNumber) into temp1
                        select new {
                            stuName = s.stuNumber,
                            sumCore = temp1.Sum(f=>f.score)
                        };

Linq无聊练习系列4--join练习的更多相关文章

  1. Linq无聊练习系列8---开放式并发事务,null和 DateTime,string操作练习

    /*********************开放式并发事务,null和 DateTime,string操作练习**********************************/ //所谓并发,就是 ...

  2. Linq无聊练习系列6--Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习

    /*********************Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习******* ...

  3. Linq无聊练习系列5--OrderBy ,Groupby练习

    /**************OrderBy ,Groupby练习*******************/                       //按学生的总分数按降序排列排序         ...

  4. Linq无聊练习系列1--where练习

    linq主要有3种,linq to sql,linq to XML,Linq to Object linq to sql. 这里没有通过相应的类,生成相应的数据库中的表.没有用流行的编码优先. 只是为 ...

  5. Linq无聊练习系列7----Insert,delete,update,attach操作练习

    /*********************Insert,delete,update,attach操作练习**********************************/            ...

  6. Linq无聊练习系列3--聚合函数练习

    /**************聚合函数 练习*******************/            //求学生的总数量            var list = ctx.T_Student. ...

  7. Linq无聊练习系列2--select/distinct练习

    void dataBindByWhere()        { /**************select/distinct 练习*******************/            //获 ...

  8. Linq 多表连接查询join

    在查询语言中,通常需要使用联接操作.在 LINQ 中,可以通过 join 子句实现联接操作.join 子句可以将来自不同源序列,并且在对象模型中没有直接关系(数据库表之间没有关系)的元素相关联,唯一的 ...

  9. LINQ TO SQL 中的join(转帖)

    http://www.cnblogs.com/ASPNET2008/archive/2008/12/21/1358152.html join对于喜欢写SQL的朋友来说还是比较实用,也比较容易接受的东西 ...

随机推荐

  1. thinkphp学习笔记8—命名空间

    原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间 ...

  2. 照片总结---选择适当的NoSQL

    版权声明:本文博客原创文章,博客,未经同意,不得转载.

  3. 2014辛星完全解读html第五节

    员,那么肯定会知道什么叫表单,这里我们就介绍一下前台怎样使用表单.表单的使用也是我们编写网页的必须经历的一关.并且,表单也往往是我们站点的漏洞和弱点出现的地方. *************表单**** ...

  4. CreateCompatibleDC工作原理

    WindowsGDI的接口没提供这种功能机制.仅仅能是先通过CreateCompatibleDC 创建一个与显示器设备内容兼容的内存设备内容.用SelectObject将位图选入内存设备内容,再用Bi ...

  5. 小程序大智慧,sqlserver 注释提取工具

    原文:小程序大智慧,sqlserver 注释提取工具 开篇背景 我习惯在写表的创建脚本时将注释直接写在脚本里,比如 /*账套*/ CREATE TABLE [dbo].[AccountingBook] ...

  6. DM8168 layout

    我们学到了以前的系统板的教训,新的版本号DM8168烤... 一级:电源.DM8168.DDR3.FPGA.CPLD.Nandflash.USB.以太网络.SATA.JTAG等待. 的地面电源部充分. ...

  7. 如何使用Linq或EF来对数据去重——Distinct方法详解

    刚开始接触LINQ时使用distinct去重时和大家一样遇到了一些麻烦,很感谢 http://www.cnblogs.com/A_ming/archive/2013/05/24/3097062.htm ...

  8. CentOS修改用户密码方法

    CentOS修改用户密码方法 CentOS修改用户密码方法 1. 普通用户 a. 获取超级用户root权限 命令:su或者su -或者su - root b. passwd 用户名 2. 超级用户 a ...

  9. 微信应用号开发知识贮备之altjs官方实例初探

    天地会珠海分舵注:随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生.从获得微信应用号邀请的业内人士发出来的一张开发工具源码截图可以看到,reacjs及其相应的FLUX框架altjs很有可能会成 ...

  10. Linq to Sql : 三种事务处理方式

    原文:Linq to Sql : 三种事务处理方式 Linq to SQL支持三种事务处理模型:显式本地事务.显式可分发事务.隐式事务.(from  MSDN: 事务 (LINQ to SQL)).M ...