/**************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. 持续集成并不能消除 Bug,而是让它们非常容易发现和改正(转)

    互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI). 本文简要介绍持续集成的概念和做法. 一.概念 持续集成指的是 ...

  2. malloc,free简单的实现

    有关标准库首先简要malloc其原理:     标准库内部通过一个双向链表.管理在堆中动态分配的内存.     malloc函数分配内存时会附加若干(一般是12个)字节,存放控制信息.     该信息 ...

  3. Javascript学习7 - 脚本化浏览器窗口

    原文:Javascript学习7 - 脚本化浏览器窗口 本节讨论了文档对象模型.客户端Javascript下Window中的各项属性,包括计时器.Location对象.Histroy对象.窗口.浏览器 ...

  4. uva 10652 Board Wrapping (计算几何-凸包)

    Problem B Board Wrapping Input: standard input Output: standard output Time Limit: 2 seconds The sma ...

  5. 网络资源(5) - Android视频

    2014_08_24 http://v.youku.com/v_show/id_XMjM5NjU2OTI0.html?f=5486194 Android开发视频教程1 http://v.youku.c ...

  6. C++ friend 用法汇总

    C++这位朋友同意之类的非公共成员的机制是一个类或函数访问,根据朋友的类型分为三种类型:一般非类成员函数为好友,类成员函数为好友.类为好友. 1 内容朋友 包括报表朋友的朋友以及朋友的定义.明默的感觉 ...

  7. HDU1253 胜利大逃亡 BFS

    胜利大逃亡 Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submiss ...

  8. oracle_解锁表_解锁用户

    1.解锁用户 以dba身份登录   sqlplus / as sysdba alter user scott account unlock; 2.解锁表 alter   system   kill   ...

  9. Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)

    Fragment与Activity之间的数据交换,通常含有3: 一.Fragment从Activity获取数据(仅本文介绍了一个第一): 两.Activity从Fragment获取数据: 三.Frag ...

  10. iWatch # 初始化工程

    iWatch --利用swift,开发iWatch手表小应用! 远程仓库,团队开发: $ git init $ git add . $ git commit -m “ProjectName” // p ...