/*********************Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习**********************************/
            //判断没有成绩的学生
            var list = from s in ctx.T_Student
                       where !s.T_Score.Any()
                       select s;
            //判断有成绩大于80的学生
            var list1 = (from s in ctx.T_Student
                         where s.T_Score.Any(t => t.score > 80)
                         select s).Distinct();
            //所有科目成绩大于80的学生
            var list2 = from s in ctx.T_Student
                        where s.T_Score.All(t=>t.score>80)
                        select s;
            //查询黄阳是否参加过考试
            string[] names = { "黄阳"};
            var list4 = from s in ctx.T_Score
                        where names.Contains(s.T_Student.stuName)
                        select s;
            //查询黄阳是否参加过考试
            var list3 = from s in ctx.T_Score
                        where (new string[] { "黄阳" }).Contains(s.T_Student.stuName)
                        select s;
            //参加过考试但是不是黄阳的同学
            var list5 = from s in ctx.T_Score
                        where !(new string[] { "黄阳" }).Contains(s.T_Student.stuName)
                        select s;
            //contains也可以包含一个对象,如查询那些学生参加了课程编号为001的第一个同学,对于contains只能包含一个实体,不能保护实体集
            var temp1 = (from s in ctx.T_Score
                        where s.stuNumber == "001"
                        select s).First();
            var result = ctx.T_Student.Where(p=>p.T_Score.Contains(temp1));
            //查找黄阳和黄波的所有成绩
            string[] names1 = {"黄阳","黄波"};
            var result2 = ctx.T_Score.Where(f=>names1.Contains(f.T_Student.stuName));
            //或者也可以这样
            var result3 = from s in ctx.T_Score
                          where (new string[] { "黄阳", "黄波" }).Contains(s.T_Student.stuName)
                          select s;
            //对于concat,连接不同的集合,不会自动过滤相同项,而且它只能对于单列进行连接,对多列进行连接,会报语法错误,因为没有相应的扩展方法

var result4 = (from s in ctx.T_Student
                           select s.stuName)
                          .Concat(from k in ctx.T_Score
                                  select k.T_Cource.courceName );
            //合并所有的学生
            var result5 = ((from s in ctx.T_Student
                            select s.stuNumber)
                        .Union
                        (from k in ctx.T_Score
                         select k.stuNumber)).Distinct();
            //交集
            var result6 = (from s in ctx.T_Student
                           select s.stuNumber).Intersect
                          (from k in ctx.T_Score
                               select k.stuNumber);
            //差集
            var result7 = (from s in ctx.T_Student
                           select s.stuNumber).Intersect
                               (from k in ctx.T_Score
                                select k.stuNumber);
            //查询前三个学生的信息
            var result8 = (from s in ctx.T_Student
                          select s).Take(3);
            //查询三个学生以外的所有学生信息
            var result9 = (from s in ctx.T_Student
                               select s).Skip(3);
            //当学号为2091723时候,就停止获取学生信息
            var result10 = (from s in ctx.T_Student
                            select s).TakeWhile(k => k.stuNumber == "2091723");
            //当学号为2091723时候,就停止跳过学生信息,并获取后边的所有学生信息
            var result11 = (from s in ctx.T_Student
                            select s).SkipWhile(k => k.stuNumber == "2091723");
            //可以用skip和take来对数据进行分页,这非常方便

//查看姓名以黄开头的学生信息,这时候程序需要引入using System.Data.Linq.SqlClient;命名空间
            var result12 = from s in ctx.T_Student
                           where SqlMethods.Like(s.stuName,"黄%")
                           select s;
            //查询学号为2X917X2的学生
            var result13 = from s in ctx.T_Student
                           where SqlMethods.Like(s.stuNumber, "2_917_2")
                           select s;
            //比较时间的操作分别有:DateDiffDay、DateDiffHour、DateDiffMillisecond、DateDiffMinute、DateDiffMonth、DateDiffSecond、DateDiffYear ,也是sqlMethods方法,而数据库中的表并没有设计时间的字段,所以就不演示了

//SQL语句进行编辑重新查询,需要引用命名空间using System.Data.Linq;
            var fn = CompiledQuery.Compile(
                (DB_StudentDataContext ctx1,string stuName)=>
                from s in ctx1.T_Student
                where s.stuName==stuName
                select s
                );
            var data1 = fn(ctx,"黄阳");
            var data2 = fn(ctx,"黄波");

Linq无聊练习系列6--Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习的更多相关文章

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

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

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

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

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

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

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

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

  5. Linq无聊练习系列4--join练习

    /**************join 练习*******************/            //对于1对多关系            var list =from c in ctx.T ...

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

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

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

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

  8. LINQ to SQL语句(8)之Concat/Union/Intersect/Except

    适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1.简单形式: var q = ( from c in db ...

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

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

随机推荐

  1. Weka初步

    从前年開始使用weka最数据挖掘方面的研究,到如今有一年半的时间了.看到我们同组的兄弟写了关于weka方面的总结.我也想整理一下.由于网上的资料实在是太少.记得刚接手的时候,真是硬着头皮看代码.只是到 ...

  2. C面试题

    1.sizeof()和strlen()使用? 答案: 1.从功能定义,strlen功能,要查找字符串的长度,sizeof功能是用来寻找指定的变量或变量类型的存储器占用 尺寸: 2.sizeof是运算符 ...

  3. Tyvj P1016 包装问题 (DP)

    底 Background 太原诚成中学2模拟法庭竞赛 第三条道路 描写叙述 Description 有一个箱子容量为v(正整数.o≤v≤20000).同一时候有n个物品(o≤n≤30).每一个物品有一 ...

  4. hdu Lowest Bit

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1196 大水题   lowbit   的应用    (可以取出一个数二进制中的最后一个1.树状数组常用, ...

  5. mysql_常用命令

    1: 以指定编码创建数据库 CREATE DATABASE `search_data` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

  6. poj 3254 Corn Fields 国家压缩dp

    意甲冠军: 要在m行n陆行,有一些格您可以种树,别人做不到的.不相邻的树,我问了一些不同的共同拥有的法律. 分析: 从后往前种,子问题向父问题扩展,当种到某一格时仅仅有他和他后面的n-1个格子的情况对 ...

  7. centos6.5 x86_64安装oracle 11.2.0.3grid

     centos6.5 x86_64安装oracle 11.2.0.3grid 1.安装前的准备 工作 1.1.配置node1 1.1.1.配置虚拟机并安装centos 安装node1----- 1 ...

  8. UVA Don't Get Rooked

    主题如以下:  Don't Get Rooked  In chess, the rook is a piece that can move any number of squaresverticall ...

  9. 今天才知道css hack是什么

    先来个冷笑话:一晚下班回家,一民警迎面巡逻而来.突然对我大喊:站住! 民警:int类型占几个字节? 我:4个. 民警:你可以走了. 我感到很诧异. 我:为什么问这样的问题? 民警:深夜还在街上走,寒酸 ...

  10. Android 它们的定义ListView实现底部和页下拉刷新刷新的顶

    在项目开发.由于数据量过大,寻呼需要加载或下拉刷新.为了缓解长期等待-time负载.这个博客的评论中被自己的定义实例ListView实现底部的下拉刷新页面正在加载结果和顶部. 其效果图: 一.List ...