1、查询Student表中的所有记录的Sname、Ssex和Class列。

SQL:select sname,ssex,class from Students

linq: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})

2、查询教师所有的单位即不重复的Depart列。

SQL:select distinct depart from Teachers

linq:from t in Teachers.distinct() select t.depart

lambda:Teachers.distinct().select(t=>t.depart)

3、查询Student表的所有记录。

SQL:select * from students

linq:from s in students select s

lambda:students.select(s=>s)

4、查询Score表中成绩在60到80之间的所有记录。

SQL:select * from Score where degree between 60 and 80

linq:from s in Score where s.degree>=60 && s.degree<=80 select s

lambda:Score.where(s=>(s.degree>=60 && s.degree<=80))

5、查询Score表中成绩为85,86或88的记录。

SQL:select * from Score where degree in (85,86,88)

linq:from s in Score where (new decimal[]{85,86,88}).contains(s.degree) select s

lambda:Score.where(s=>(new Decimal[]{85,86,88}.contains(s.degree)))

查询Score表中成绩不是85,86或88的记录。

SQL:select * from Score where degree not in (85,86,88)

linq:from s in Score where !(new decimal[]{85,86,88}).contains(s.degree) select s

lambda:Score.where(s=>!(new Decimal[]{85,86,88}.contains(s.degree)))

6、查询Student表中"95031"班或性别为"女"的同学记录。

SQL:select * from students where class ='95031' or ssex= N'女'

linq:from s in Students where s.class="95031" || s.ssex="女" select s

lambda:Students.where(s=>(s.class="95031"||s.ssex="女"))

7、以Class降序查询Student表的所有记录。

SQL:select * from students order by Class DESC

linq:from s in students orderby s.class Descending select s

lambda:Students.OrderByDescending(s=>s.class)

8、以Cno升序、Degree降序查询Score表的所有记录。

SQL:select * from score order by Cno ASC,Degree DESC

linq:from s in Score orderby s.degree descending orderby s.cno ascending select s

lambda:Score.OrderByDescending(s=>s.degree).OrderBy(s=>s.cno)

9、查询"95031"班的学生人数。

SQL:select count(*) from students 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、查询Score表中的最高分的学生学号和课程号。

SQL:select distinct s.Sno,c.Cno from students as s,course as c ,score as sc where 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()

11、查询'3-105'号课程的平均分。

SQL: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).average()

12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。

select avg(degree) from score where cno like '3%' group by Cno having count(*)>=5

linq: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))

13、查询最低分大于70,最高分小于90的Sno列。

select sno from score group by sno having min(degree) > 70 and max(degree) < 90

linq:from s in Scores group s by s.sno into ss where ss.min(cc=>cc.degree)>70 && ss.max(cc=>cc.degree)<90  select new {sno=ss.key}

lambda:Scores.GroupBy(s=>s.sno).where(ss=>((ss.Min(cc=>cc.degree)>70)&&(ss.max(cc=>cc.degree)<90))).select(ss=>new{sno=ss.key})

14、查询所有学生的Sname、Cno和Degree列。

select s.sname,sc.cno,sc.degree from student as s,score as sc where s.sno = sc.sno

linq:from s in Students join sc in Scores on s.sno equals sc.sno select new {s.sname,sc.cno,sc.degree}

lambda:Students.join(Scores, s=>s.sno, sc=>sc.sno, (s,sc)=>new{sname=s.name,cno=sc.cno,degree=sc.degree})

15、查询所有学生的Sno、Cname和Degree列。

SQL:select sc.sno,c.cname,sc.degree from course as c,score as sc where c.cno = sc.cno

linq:from c in Courses join sc in Scores on c.cno equals sc.cno select new {sc.sno,c.came,sc.degree}

lambda:Courses.join(Scores,c=>c.no,sc=>sc.cno,(c,sc)=>new{sno=sc.sno,cname=c.cname,degree=sc.degree})

16、查询所有学生的Sname、Cname和Degree列。

SQL:select s.sname,c.cname,sc.degree from student as s,course as c,score as sc where s.sno = sc.sno and c.cno = sc.cno

linq:from s in Students from c in Courses from sc in Scores where s.sno==sc.sno && c.cno==sc.cno select new{s.sname,c.cname,sc.degree}

SQL,Linq,Lambda之间的转换练习的更多相关文章

  1. SQL,LINQ,Lambda语法对照图(转载)

    如果你熟悉SQL语句,当使用LINQ时,会有似曾相识的感觉.但又略有不同.下面是SQL和LINQ,Lambda语法对照图 SQL LINQ Lambda SELECT * FROM HumanReso ...

  2. C# ORM中Dto Linq Expression 和 数据库Model Linq Expression之间的转换

    今天在百度知道中看到一个问题,研究了一会便回答了: http://zhidao.baidu.com/question/920461189016484459.html 如何使dto linq 表达式转换 ...

  3. sql linq lambda 对比

    . 查询Student表中的所有记录的Sname.Ssex和Class列. select sname,ssex,class from student Linq: from s in Students ...

  4. 构造复杂Lambda困惑之学会用LinqPad和Linqer实现Sql 和 Lambda之间的互转

    一:linq的话我们可能会遇到两个问题: 1. 我们的linq出现性能低下的时候,如果优化???? 我们写的linq所生成的sql是无法控制的... (要做性能优化,必须预先知道sql会生成啥样的?? ...

  5. SQL/LINQ/Lamda 写法[转发]

    SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees   .Sele ...

  6. SQL Linq lamda区别

    SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees   .Sele ...

  7. SQL/LINQ/Lamda

    SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees   .Sele ...

  8. linq中查询列表的使用及iqueryable和list集合之间的转换

    linq中查询列表的使用及iqueryable和list集合之间的转换 比如要查询一个货架集合,但是只需要其id和name即可,可以用以下方法:先写一个model类:CatalogModel(注意该类 ...

  9. java.util.Date 与 java.sql.Date 之间的转换

    SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss"); String dateStr = sdf.for ...

随机推荐

  1. Android的setVisibility(View.GONE)无效的问题及原因分析(转)

    出现这种情况很可能是因为设置了animation,并且调用了setFillAfter(true),这就会导致setVisibility无效,只需要调用一下clearAnimation()方法或者去掉s ...

  2. sql总结(3)---比较全

    一.交叉连接(CROSS JOIN) 交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积. 例如:下面的语句1和语句2的结果是相同的. 语句1:隐 ...

  3. 微信小程序之本地缓存(十)

    [未经作者本人同意,请勿以任何形式转载] 目前,微信给每个小程序提供了10M的本地缓存空间(哎哟妈呀好大) 有了本地缓存,你的小程序可以做到: 离线应用(已测试在无网络的情况下,可以操作缓存数据) 流 ...

  4. JSP基础学习

    JQuery教程: http://www.w3school.com.cn/jquery/ HTTP协议的 http://www.w3.org/Protocols/rfc2616/rfc2616.htm ...

  5. 万能的林萧说:一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础”。

    来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日,LZ在群里发话,"招人啦." 然某群友曰,"群主,俺想去." LZ回之,"你 ...

  6. LVS持久连接

    LVS持久连接 源地址HASH ipvs的连接模板 可以通过ipvsadm -L -c 持久连接持久客户端连接 PCC:在固定时间内将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS0表示所 ...

  7. C++与C的指针的不同

    只有一点不同:C++的类别控制更为严格, 不允许通过void*来实现不同数据类型的数据之间的相互赋值, 只能显示的cast. 例如: bird *b; rock *r; void *v; v = b; ...

  8. 如何实时查看linux下的日志

    Linux日志文件在/var/log目录下,可以通过命令查看日志文件. 1,cat messages可以查看某个日志文件. 2,要达到实时更新,可以通过tail命令查看更新的数据,例如tail -f ...

  9. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  10. a版本冲刺第九天

    队名:Aruba   队员: 黄辉昌 李陈辉 林炳锋 鄢继仁 张秀锋 章  鼎 学号 昨天完成的任务 今天做的任务 明天要做的任务 困难点 体会 408 着手编辑测试文档,了解测试工具 编写测试用例集 ...