1、 查询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
    })

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

3、 
查询Student表的所有记录。
select * 
from student
Linq:
    from s in Students
    select s
Lambda:
    Students.Select( s => s)

4、 
查询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、 
查询Score表中成绩为85,86或88的记录。
select * 
from score where degree in (85,86,88)
Linq:
In
    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))
Not 
in
    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)))

Any()应用:双表进行Any时,必须是主键为(String)
    CustomerDemographics 
CustomerTypeID(String)
    CustomerCustomerDemos (CustomerID 
CustomerTypeID) (String)
    一个主键与二个主建进行Any(或者是一对一关键进行Any)
    不可,以二个主键于与一个主键进行Any
    
    from e in 
CustomerDemographics
    where !e.CustomerCustomerDemos.Any()
    select 
e
    
    from c in Categories
    where !c.Products.Any()
    
select c

6、 
查询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)

8、 
以Cno升序、Degree降序查询Score表的所有记录。
select * 
from score order by Cno ASC,Degree DESC
Linq:(这里Cno ASC在linq中要写在最外面)
    from s in Scores
    orderby 
s.DEGREE descending
    orderby s.CNO ascending 
    select 
s
Lambda:
    
Scores.OrderByDescending( s => s.DEGREE)
          .OrderBy( s => 
s.CNO)

9、 
查询"95031"班的学生人数。
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、查询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()
操作时问题?执行时报错: where s.SNO == sno(这行报出来的) 运算符"=="无法应用于"string"和"System.Linq.IQueryable<string>"类型的操作数
解决:
原:let 
sno = (from ss in Scores
                where ss.DEGREE == 
maxDegree
                select 
ss.SNO).ToString()
Queryable().Single()返回序列的唯一元素;如果该序列并非恰好包含一个元素,则会引发异常。 
解:let 
sno = (from ss in Scores
                where ss.DEGREE == 
maxDegree
                select 
ss.SNO).Single().ToString()

11、查询'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)
                .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) )
Linq: SqlMethod
like也可以这样写:
    s.CNO.StartsWith("3") 
or SqlMethods.Like(s.CNO,"%3")

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.SNAME,
                                            CNO = 
sc.CNO,
                                            DEGREE = 
sc.DEGREE
                                          })

15、查询所有学生的Sno、Cname和Degree列。
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
                                        })

16、查询所有学生的Sname、Cname和Degree列。
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 }

 

linq lanbda表达式的用法的更多相关文章

  1. C# LINQ查询表达式用法对应Lambda表达式

    C#编程语言非常优美,我个人还是非常赞同的.特别是在学习一段时间C#后发现确实在它的语法和美观度来说确实要比其它编程语言强一些(也可能是由于VS编译器的加持)用起来非常舒服,而且对于C#我觉得他最优美 ...

  2. LinQ To Object 基本用法

    http://www.cnblogs.com/terryzh/archive/2012/11/10/2763538.html LinQ To Object 基本用法 inq的基本语法:var resu ...

  3. LINQ查询表达式和LAMBDA点标记方法基础

    在上一篇文章中,我们介绍了LINQ的一些基本用法,这一篇我们来看下另一种更简洁更优雅的表达式,Lambda表达式,也可以叫做点标记方法. 相信大家在实际工作中都用到过这两种方式,下面我们还是用实例来看 ...

  4. Linq专题之创建Linq查询表达式

    本节我们主要介绍一下如何创建查询集合类型,关系数据库类型,DataSet对象类型和XML类型的数据源的Linq查询表达式. 下面在实例代码ReadyCollectionData()函数创建了准备的数据 ...

  5. Linq lamda表达式Single和First方法

      让我们来看看如何对一个整数数组使用 Single 操作符.这个整数数组的每个元素代表 2 的 1 到 10 次方.先创建此数组,然后使用 Single 操作符来检索满足 Linq Lambda表达 ...

  6. 2.3 LINQ查询表达式中 使用select子句 指定目标数据

    本篇讲解LINQ查询的三种形式: 查询对象 自定义查询对象某个属性 查询匿名类型结果 [1.查询结果返回集合元素] 在LINQ查询中,select子句和from子句都是必备子句.LINQ查询表达式必须 ...

  7. SQL进阶1:case表达式的用法示例

    一:case表达式的用法 1.SQL中的case表达式的作用是用来对"某个变量"进行某种转化,通常在select字句中使用,举个例子: 不能看出,case表达式很像我们的if el ...

  8. LINQ查询表达式---------let子句

    LINQ查询表达式---------let子句 let子句创建一个范围变量来存储结果,变量被创建后,不能修改或把其他表达式的结果重新赋值给它.此范围变量可以再后续的LINQ子句中使用. class P ...

  9. LINQ查询表达式---------join子句

    LINQ查询表达式---------join子句 join 子句接受两个源序列作为输入. 每个序列中的元素都必须是可以与另一个序列中的相应属性进行比较的属性,或者包含一个这样的属性. join子句使用 ...

随机推荐

  1. 兼容ie的jquery ajax文件上传

    Ajax文件上传插件很多,但兼容性各不一样,许多是对ie不兼容的,另外项目中是要求将网页内容嵌入到桌面端应用的,这样就不允许带flash的上传插件了,如:jquery uploadify...悲剧 对 ...

  2. PHP 如何显示大数字,防止显示为 科学计数法 形式

    PHP 数字超过一定长度时,会自动转换为 科学计数法 的形式,如 1.2345678912346E+16: 如何 避免转换,让它原样展示呢? 不过,可以用PHP函数 number_format() 来 ...

  3. 使用liunx部署的心得

    安装SSH. 输入IP,输入用户名,点击连接,再输入密码. 如果采用的tomcat容器,则: 第一步: 查看正在运行的tomcat ps aux|grep tomcat 如果输出信息很长代表启动了的, ...

  4. MetadataType来帮助entity framework自动生成的代码进行标注

    真的是,用的时候就四处google,还是记在这里容易找 [MetadataType(typeof(Person.Metadata))] public partial class Person { pr ...

  5. Oracle 多表查询优化

    ORACLE有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作.假设高速 ...

  6. jquery版悬浮模块demo

    在做在线客服时,代码就是按照该模块命名.现在,我要添加一个返回主页的功能,我觉得再复制一遍之前的代码,那个量有点多,如果我再添加一个功能,那个量会很多……现在我用创建对象字面量的方式来创建(其实我还想 ...

  7. C#构造方法重载

    1.什么是构造方法? 首先,它是一个方法,它是类中 众多方法中的一个.其次,它具有类中其他方法所不具备的一些特性. 在类执行开始的时候,执行这个方法. 2.构造方法相对其他方法有哪些不同? 方法名:类 ...

  8. 微博地址url(id)与mid的相互转换 Java版

    原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分 ...

  9. java文件压缩和解压

    功能实现. package com.test; import java.io.File; import java.io.BufferedOutputStream; import java.io.Buf ...

  10. python gui之tkinter语法杂记

    随手写的,后续整理. 1. Entry如何调用父类的__init__? 以下错,原因后续分析 super(Your_Entry_Class, self).__init__(self,**kw) 报错: ...