Linq无聊练习系列6--Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习
/*********************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操作练习的更多相关文章
- Linq无聊练习系列8---开放式并发事务,null和 DateTime,string操作练习
/*********************开放式并发事务,null和 DateTime,string操作练习**********************************/ //所谓并发,就是 ...
- Linq无聊练习系列1--where练习
linq主要有3种,linq to sql,linq to XML,Linq to Object linq to sql. 这里没有通过相应的类,生成相应的数据库中的表.没有用流行的编码优先. 只是为 ...
- Linq无聊练习系列7----Insert,delete,update,attach操作练习
/*********************Insert,delete,update,attach操作练习**********************************/ ...
- Linq无聊练习系列5--OrderBy ,Groupby练习
/**************OrderBy ,Groupby练习*******************/ //按学生的总分数按降序排列排序 ...
- Linq无聊练习系列4--join练习
/**************join 练习*******************/ //对于1对多关系 var list =from c in ctx.T ...
- Linq无聊练习系列3--聚合函数练习
/**************聚合函数 练习*******************/ //求学生的总数量 var list = ctx.T_Student. ...
- Linq无聊练习系列2--select/distinct练习
void dataBindByWhere() { /**************select/distinct 练习*******************/ //获 ...
- LINQ to SQL语句(8)之Concat/Union/Intersect/Except
适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1.简单形式: var q = ( from c in db ...
- LINQ to Sql系列一 增,删,改
首先,我们来了解一下LINQ to sql 是什么,我想从以下几点来做说明. 1,LINQ是从.net framework 3.0开始引入的的语言特性,主要是用来对集合数据进行操作的.2,LINQ t ...
随机推荐
- linux awk命令详细使用方法
简单介绍 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部 ...
- 使用Enterprise Architecture绘制10种UML画画
UML绘制10种课程要求UML画画,选Enterprise Architecture作为一个绘图工具,每一个草图必须是网上找教程,我觉得很麻烦,还有一些数字并没有找到详细的教程.在我自己找一个绘图方法 ...
- ubuntu14.04通过将语音,耳机没有声音
真正使用linux每天都有新的发现啊,截至今天上午有一台电脑,听几首歌.后插上耳机中没有声音.我认为这是一个糟糕的耳机,把插在手机耳机,我发现了一个语音耳机,很奇怪,我喜欢计算机接口是不是有问题,是在 ...
- 流动python - 写port扫描仪和各种并发尝试(多线程/多进程/gevent/futures)
port扫描仪的原理非常easy.没有什么比操作更socket,能够connect它认为,port打开. import socket def scan(port): s = socket.socket ...
- 软体project(四)——一生
软件生存周期是软件project中的一个重要概念,把整个生存周期划分为若干个阶段,是实现软件生产project化的重要步骤. 软件的生存周期一般划分为软件计划.软件开发和软件执行三个时期,例如以下图: ...
- 【Flume NG用户指南】(2)构造
作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处: http://blog.csdn.net/zhoubangtao/article/details ...
- VAXVOIP SDK Licensekey
Insert the following key to the SDK with SetLicenseKey call: VAXVOIP.COM-191P238P55P253P97P229P51P76 ...
- git_自动同步_sync.sh
1: 使用方法 sh sync.sh code_dir 代码 #add echo $1 cd $1 git add . git commit -m "Added notes for $( ...
- oracle_windows下命令启动oracle监听和服务
1.检查监听器状态 C:\Users\Administrator>lsnrctl status 2.启动监听程序 C:\Users\Administrator>lsnrctl start ...
- Jquery zTree实例
zTree[简单介绍] zTree 是利用 JQuery 的核心代码,实现一套能完毕大部分经常使用功能的 Tree 插件 兼容 IE.FireFox.Chrome 等浏览器 在一个页面内可同一时候生成 ...