LINQ的书写格式如下:  
 from 临时变量 in 集合对象或数据库对象  
 where 条件表达式   
[order by条件]   
select 临时变量中被查询的值  
 [group by 条件]

Lambda表达式的书写格式如下:

(参数列表) => 表达式或者语句块

其中: 参数个数:可以有多个参数,一个参数,或者无参数。

参数类型:可以隐式或者显式定义。

表达式或者语句块:这部分就是我们平常写函数的实现部分(函数体)。

1.查询全部

查询Student表的所有记录。
  select * from student
  Linq:
  from s in Students
  select s
  Lambda:
  Students.Select( s => s)
 
2 按条件查询全部:

查询Student表中的所有记录的Sname、Ssex和Class列。
 select sname,ssex,class from student
  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
  })

3.distinct 去掉重复的

查询教师所有的单位即不重复的Depart列。
 select distinct depart from teacher
 Linq:
 from t in Teachers.Distinct()
 select t.DEPART
 Lambda:
 Teachers.Distinct().Select( t => t.DEPART)

4.连接查询 between and

查询Score表中成绩在60到80之间的所有记录。
 select * from score where degree between 60 and 80
 Linq:
 from s in Scores
 where s.DEGREE >= 60 && s.DEGREE < 80
 select s
 Lambda:
 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 s
 Lambda:
 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 s
 Lambda:
 Students.Where(s => ( s.CLASS == "95031" || s.CLASS == "女"))

7.排序

以Class降序查询Student表的所有记录。
 select * from student order by Class DESC
 Linq:
 from s in Students
 orderby s.CLASS descending
 select s
 Lambda:
 Students.OrderByDescending(s => s.CLASS)
 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 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()

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) )
 Linq: SqlMethod
 like也可以这样写:
 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(*)>=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) )
 Linq: SqlMethod
 like也可以这样写:
 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.cno
 Linq:
 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()

sql 、linq、lambda 总结的更多相关文章

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

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

  2. SQL,Linq,Lambda之间的转换练习

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

  3. sql linq lambda 对比

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

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

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

  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. ASP.NET EF(LINQ/Lambda查询)

    EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET ASP.NET MVC 项目会自动 ...

  8. [算法1-排序](.NET源码学习)& LINQ & Lambda

    [算法1-排序](.NET源码学习)& LINQ & Lambda 说起排序算法,在日常实际开发中我们基本不在意这些事情,有API不用不是没事找事嘛.但必要的基础还是需要了解掌握. 排 ...

  9. sql,lambda,linq语句

    实例 Code 查询Student表的所有记录. select * from student Linq: from s in Students select s Lambda: Students.Se ...

  10. Linq lambda 匿名方法

    课程6 委托.匿名方法.Lambda表达式.Linq查询表达式 上课日志1 一.委托的基本认识 提问:能不能把方法作为参数传递??? 也即是能不能声明一个能存放方法的变量呢——委托. 委托是一种数据类 ...

随机推荐

  1. Mysql之高可用

    使用缓存Memcache, 1,可使用Hash算法由客户端决定路由到哪个Memcache服务器上:客户端完全不用关心数据存储在哪个Memcache服务器上:完全隔离了客户端与服务端:由于是Hash,在 ...

  2. EasyUI中控件汉化问题

    --BY ZYZ 我在使用EasyUI的过程中,遇到了控件无汉化的情况,如下图. 这么多洋文看着觉得挺烦的.时间居然是月日年格式的,这样可不行,得改. 重写控件代码?别,那能是我这种低级代码C-V客能 ...

  3. lsof

    lsof `which httpd` //那个进程在使用apache的可执行文件 lsof /etc/passwd //那个进程在占用/etc/passwd lsof /dev/hda6 //那个进程 ...

  4. LeetCode : 287. Find the Duplicate Number

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAACRAAAAMMCAYAAAAhQhmZAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVlw ...

  5. 与你相遇好幸运,mbview的mbtiles文件分析

    mbview是一个查看.mbtiles文件的本地程序. https://github.com/mapbox/mbview .mbtiles文件就是一个Sqlite文件,用Navicat Premium ...

  6. Pyqt QListWidget 展示系统环境变量

    今天学习了下Pyqt的 QListWidget 控件 我们先看下这个图片 这张图片就是典型的listWidget效果,我们今天就仿这样布局新建个ListWidget 在网上找了个关于QListWidg ...

  7. 新手上路之Hibernate:第一个Hibernate例子

    一.Hibernate概述 (一)什么是Hibernate? Hibernate核心内容是ORM(关系对象模型).可以将对象自动的生成数据库中的信息,使得开发更加的面向对象.这样作为程序员就可以使用面 ...

  8. 攻城狮在路上(壹) Hibernate(五)--- 映射一对多关联关系

    关联是有方向的,包含单向关联和双向关联.分别讨论.本文以客户Customer和订单Order来进行讨论:一个Customer有多个Order,每个Order对应一个Customer. Customer ...

  9. IBM Rational AppScan 无法记录登录序列 分类: 数据安全 2015-03-18 16:46 158人阅读 评论(0) 收藏

    为了测试漏洞,我在本地部署了一个站点,为http://localhost/app,并且有登录页面. 但是尝试多次,都无法记录登录页面.此时尝试了在hosts文件中,自定义了一个域名 127.0.0.1 ...

  10. Win10 启动模拟器

    不知道怎么解决 答:去bios里设置了.开启了虚拟化hyper,重启.