/**************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. java 科学计算库

    stackoverflow 上的讨论, 其中不乏lib的作者... http://stackoverflow.com/questions/529457/performance-of-java-matr ...

  2. 排序(4)---------希尔(shell)排序(C语言实现)

    由于考试耽搁了几天,不好意思~~~ 前面的介绍的三种排序算法,都属于简单排序,大家能够看下详细算法,时间复杂度基本都在0(n^2),这样呢,非常多计算机界.数学界的牛人就非常不爽了,他们在家里想啊想, ...

  3. Codeforces 479E Riding in a Lift(dp)

    题目链接:Codeforces 479E Riding in a Lift 题目大意:有一栋高N层的楼,有个无聊的人在A层,他喜欢玩电梯,每次会做电梯到另外一层.可是这栋楼里有个秘 密实验室在B层,所 ...

  4. UBUNTU如何改变mysql默认文件夹数据文件夹

    停止mysql维修 * sudo /etc/init.d/mysql stop 原始文件夹的副本 * cp -r /var/lib/mysql /home/yourname/somewhere 改动权 ...

  5. hdu1086(线段相交)

    题目意思: 给出n个线段,推断这n条线段中,线段相交的对数. http://acm.hdu.edu.cn/showproblem.php?pid=1086 题目分析: 此题主要写出推断线段相交的函数, ...

  6. "错: void 值不被忽略,因为预期"解决

    在C陷阱与缺陷,实现assert什么时候,在这个过程很聪明,化为一个表达式,在当条件为假时就会调用_assert_error报错并终止程序. 刚開始_assert_error 的返回值类型是 void ...

  7. (c#)SKYPE API项目总结(一)

    原文:(c#)SKYPE API项目总结(一) 这个项目的需求:SKYPE软件文字聊天同步翻译,并将翻译后的内容会发送给对方,将对方发给自己的话翻译成自己语种.功能见图:               ...

  8. 都能看懂的嵌入式linux/android alsa_aplay alsa_amixer命令行使用方法

    前几天在嵌入式linux上用到alsa command,网上查的资料多不给力,仅仅有动手一点点查,最终能够用了,将这个用法告诉大家,以免大家少走弯路. 0.先查看系统支持哪几个alsa cmd: ll ...

  9. Hard Parse&Soft Parse

    DDL每次运行将必须是难以解决. SQL 解析过程 Oracle对此SQL将进行几个步骤的处理过程: 1.语法检查(syntax check): 检查此sql的拼写是否语法. 2.语义检查(seman ...

  10. java_软件发布版本_Asynch HttpClien 对比发行版本说明_Alpha、Beta、RC、GA版本的区别

    今天看了一天的apache 的httpasyncclient ,为了和默认的httpclient做个对比,httpcore是核心轻量级的提供传统阻塞IO 和 java NIO两种方式,httpclie ...