/**************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. 基于注释配置bean和装饰bean

    1.组件扫描 Spring容器能够从classpath(类路径)下自动扫描.侦测和实例化具有特定注释的组件. 2.特定注释组件 –@Component: 基本注解, 标识了一个受 Spring 管理的 ...

  2. java.lang.reflect操作对象属性(域)的值

    package reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.l ...

  3. OCP读书笔记(24) - 题库(ExamD)

    327.You have a database with the following tablespaces: SYSTEM, SYSAUX, UNDO, USERS, TEMP.You want t ...

  4. 动手学习TCP:数据传输(转)

    前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的 ...

  5. 经典算法题每日演练——第十六题 Kruskal算法

    原文:经典算法题每日演练--第十六题 Kruskal算法 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的. 一:思想 若存在M={0, ...

  6. javascript权威指南(6) - 对象

    JavaScript对象可以从一个称为原型的对象继承属性,这种"原型式继承"(prototypal inheritance)是JavaScript的核心特征.除了字符串.数字.tr ...

  7. 从[java.lang.OutOfMemoryError: Java heap space]恢复

    出现java.lang.OutOfMemoryError: Java heap space该错误或者是程序问题,或者被分配到JVM内存真的是不够的. 一般来说都是能够事前可控解决的. 可是假设不可控的 ...

  8. Linux下javaweb

    Linux下javaweb环境搭建 步骤: 1.使用远程工具连接上服务器,例如xsheel(ssh).filezilla(ftp) 2.JDK安装及相关配置 3.Mysql安装及相关配置 4.Tomc ...

  9. ArcEngine载入中SDE问题栅格数据

    当直接加载矢量数据到IFeatureWorkspace接口可,但是,在装载门格当要传送的数据IRasterWorkspaceEx接口. 效果如下面的,对可以被添加到双击Globe在. watermar ...

  10. UVA - 817 According to Bartjens

    Description  According to Bartjens  The wide dissemination of calculators and computers has itsdisad ...