Lambda linq 区别
来源:互联网 发布:ab测试 算法 编辑:程序博客网 时间:2024/06/16 11:57
http://www.cnblogs.com/kongxiaoshuang/p/5952514.html
LINQ的书写格式如下:
from 临时变量 in 集合对象或数据库对象
where 条件表达式
[order by条件]
select 临时变量中被查询的值
[group by 条件]
Lambda表达式的书写格式如下:
(参数列表) => 表达式或者语句块
其中: 参数个数:可以有多个参数,一个参数,或者无参数。
参数类型:可以隐式或者显式定义。
表达式或者语句块:这部分就是我们平常写函数的实现部分(函数体)。
1.查询全部
实例 Code 查询Student表的所有记录。select * from studentLinq: from s in Students select sLambda: Students.Select( s => s)
2 按条件查询全部:
查询Student表中的所有记录的Sname、Ssex和Class列。select sname,ssex,class from studentLinq: from s in Students select new { s.SNAME, s.SSEX, s.CLASS }Lambda: Students.Select( s => new { SNAME = s.SNAME,SSEX = s.SSEX,CLASS = s.CLASS })
3.distinct 去掉重复的
查询教师所有的单位即不重复的Depart列。select distinct depart from teacherLinq: from t in Teachers.Distinct() select t.DEPARTLambda: Teachers.Distinct().Select( t => t.DEPART)
4.连接查询 between and
查询Score表中成绩在60到80之间的所有记录。select * from score where degree between 60 and 80Linq: from s in Scores where s.DEGREE >= 60 && s.DEGREE < 80 select sLambda: Scores.Where( s => ( s.DEGREE >= 60 && s.DEGREE < 80 ) )
5.在范围内筛选 In
select * from score where degree in (85,86,88)Linq: from s in Scores where ( new decimal[]{85,86,88} ).Contains(s.DEGREE) select sLambda: Scores.Where( s => new Decimal[] {85,86,88}.Contains(s.DEGREE))
6.or 条件过滤
查询Student表中"95031"班或性别为"女"的同学记录。select * from student where class ='95031' or ssex= N'女'Linq: from s in Students where s.CLASS == "95031" || s.CLASS == "女" select sLambda: Students.Where(s => ( s.CLASS == "95031" || s.CLASS == "女"))
7.排序
以Class降序查询Student表的所有记录。select * from student order by Class DESCLinq: from s in Students orderby s.CLASS descending select sLambda: Students.OrderByDescending(s => s.CLASS)
8.count()行数查询
select count(*) from student where class = '95031'Linq: ( from s in Students where s.CLASS == "95031" select s ).Count()Lambda: Students.Where( s => s.CLASS == "95031" ) .Select( s => s) .Count()
10.avg()平均
查询'3-105'号课程的平均分。select avg(degree) from score where cno = '3-105'Linq: ( from s in Scores where s.CNO == "3-105" select s.DEGREE ).Average()Lambda: Scores.Where( s => s.CNO == "3-105") .Select( s => s.DEGREE)
11.子查询
查询Score表中的最高分的学生学号和课程号。select distinct s.Sno,c.Cno from student as s,course as c ,score as scwhere s.sno=(select sno from score where degree = (select max(degree) from score))and c.cno = (select cno from score where degree = (select max(degree) from score))Linq: ( from s in Students from c in Courses from sc in Scores let maxDegree = (from sss in Scores select sss.DEGREE ).Max() let sno = (from ss in Scores where ss.DEGREE == maxDegree select ss.SNO).Single().ToString() let cno = (from ssss in Scores where ssss.DEGREE == maxDegree select ssss.CNO).Single().ToString() where s.SNO == sno && c.CNO == cno select new { s.SNO, c.CNO } ).Distinct()
12.分组 过滤
查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。select avg(degree) from score where cno like '3%' group by Cno having count(*)>=5Linq: from s in Scores where s.CNO.StartsWith("3") group s by s.CNO into cc where cc.Count() >= 5 select cc.Average( c => c.DEGREE)Lambda: Scores.Where( s => s.CNO.StartsWith("3") ) .GroupBy( s => s.CNO ) .Where( cc => ( cc.Count() >= 5) ) .Select( cc => cc.Average( c => c.DEGREE) )Linq: SqlMethodlike也可以这样写: s.CNO.StartsWith("3") or SqlMethods.Like(s.CNO,"%3")
13.分组
查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。select avg(degree) from score where cno like '3%' group by Cno having count(*)>=5Linq: from s in Scores where s.CNO.StartsWith("3") group s by s.CNO into cc where cc.Count() >= 5 select cc.Average( c => c.DEGREE)Lambda: Scores.Where( s => s.CNO.StartsWith("3") ) .GroupBy( s => s.CNO ) .Where( cc => ( cc.Count() >= 5) ) .Select( cc => cc.Average( c => c.DEGREE) )Linq: SqlMethodlike也可以这样写: s.CNO.StartsWith("3") or SqlMethods.Like(s.CNO,"%3")
14. 多表查询
select sc.sno,c.cname,sc.degree from course as c,score as sc where c.cno = sc.cnoLinq: from c in Courses join sc in Scores on c.CNO equals sc.CNO select new { sc.SNO,c.CNAME,sc.DEGREE }Lambda: Courses.Join ( Scores, c => c.CNO, sc => sc.CNO, (c, sc) => new { SNO = sc.SNO, CNAME = c.CNAME, DEGREE = sc.DEGREE }) .Average()
阅读全文
0 0
- Lambda 与 linq 区别
- Lambda linq 区别
- sql 、linq、lambda 查询语句的区别
- sql 、linq、lambda 查询语句的区别
- sql 、linq、lambda 查询语句的区别
- sql 、linq、lambda 查询语句的区别
- sql 、linq、lambda 查询语句的区别
- sql 、linq、lambda 查询语句的区别
- sql 、linq、lambda 查询语句的区别
- Lambda和Linq
- 学习Linq和Lambda
- SQL/LINQ/Lambda 转换
- linq和lambda表达式
- EF,Linq,lambda
- LINQ和Lambda表达式
- linq lambda 用法,查询
- LINQ中的Lambda表达式
- Linq与Lambda-概述
- 3-4 计算长方形的周长和面积
- 软件开发流程
- 正则表达式实践(看完就会)
- 网易2017内推笔试2:幸运的袋子 [python]
- Android 角标
- Lambda linq 区别
- 表格内自定义多选按钮样式,实现全选功能,纯表格内容js分页
- 《计算机操作系统》总结一
- 备注一下从MarginNote到Scrivener的过程
- echarts 地图散点
- 利用spring mvc 拦截器 鉴权
- spark原理入门详解:包括生态、特点、概念等
- 关于IDEA2017.2.5 输入法 中文输入框无法显示问题的解决方案
- DCGAN论文笔记+源码解析