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. August 10th, 2016, Week 33rd, Wednesday

    The degree of loving is measured by the degree of giving. 爱的深浅是用给与的多少来衡量的. Some say that if you love ...

  2. java https tomcat 单双认证(含证书生成和代码实现) 原创转载请备注,谢谢O(∩_∩)O

    server: apache-tomcat-6.0.44 jdk1.7.0_79client: jdk1.7.0_79 jks是JAVA的keytools证书工具支持的证书私钥格式. pfx是微软支持 ...

  3. Java返回距离当前时间段

    /** * 计算该时间离当前时间的差距 * @param time 格式为:yyyy-MM-dd HH:mm:ss * @return */ public static String getShort ...

  4. 如何设计一个 iOS 控件?(iOS 控件完全解析) (转)

    前言 一个控件从外在特征来说,主要是封装这几点: 交互方式 显示样式 数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内 ...

  5. nfs 是Network File System 网络文件系统

    NFS的基本原刚是容许不同的客户端及服务通过一组PRC分享相同的文件系统,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享.NFS在文件传送过程中依赖于RPC协议.远程过程调用Rem ...

  6. 在ubuntu上搭建开发环境1---在windows7的基础上在安装ubuntu(双系统)

    转载:http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html 当需要频繁使用ubuntu时,vmware虚拟机下运行ubuntu, ...

  7. Delphi之DLL知识学习5---在Delphi应用程序中使用DLL

    首先说明一下:同一个动态库(DLL)被多个的程序加载的话,那么将会在每次加载的时候都会重新分配新的独立的内存空间,绝对不是共用一个,所以当一个DLL被多次加载的时候,其会在内存中“复制”多份,不会互相 ...

  8. Java Hour 62 J2EE App 服务器

    目前略微瓶颈了,准备换工作. tomcat.weblogic.jboss的区别,容器的作用 Apache 是一个http 服务器. Tomcat 是一web 应用程序服务器,支持部分的j2ee. Jb ...

  9. PHP导出Excel一个方法轻松搞定

    /** * 导出数据为excel表格 *@param $data 一个二维数组,结构如同从数据库查出来的数组 *@param $title excel的第一行标题,一个数组,如果为空则没有标题 *@p ...

  10. Win7下用IIS发布网站

    安装IIS控制面板->程序->程序和功能, 点击左侧的“打开或关闭Windows功能”把这几项都勾上吧,虽然有些不是必须的,多勾无碍. 进入IIS管理器控制面板-> 系统和安全-&g ...