子句 说明
from 指定数据源和范围变量(类似于迭代变量)。
where 根据一个或多个由逻辑“与”和逻辑“或”运算符(&& 或 ||)分隔的布尔表达式筛选源元素。
select 指定当执行查询时返回的序列中的元素将具有的类型和形式。
group 按照指定的键值对查询结果进行分组。
into 提供一个标识符,它可以充当对 join、group 或 select 子句的结果的引用。
orderby 基于元素类型的默认比较器按升序或降序对查询结果进行排序。
join 基于两个指定匹配条件之间的相等比较来联接两个数据源。
let 引入一个用于存储查询表达式中的子表达式结果的范围变量。
in join 子句中的上下文关键字。
on join 子句中的上下文关键字。
equals join 子句中的上下文关键字。
by group 子句中的上下文关键字。
ascending orderby 子句中的上下文关键字。
descending orderby 子句中的上下文关键字。

1、from关键字

需求查询出班级信息

Linq:from g in Grades select g

对应Lambda:Grades.Select (g => g)

对应SQL:select * from Grade

2、where关键字

需求查询出语文成绩大于90的成绩表ID

Linq:from s in ScoreInfo where s.Chinese>90 select s.ScoreId

对应Lambda:ScoreInfo .Where (s => (s.Chinese > 90)) .Select (s => s.ScoreId)

对应SQL:select ScoreId from ScoreInfo where Chinese>90

3、group关键字

需求查询以工资为500的进行分组

Linq:from s in SalaryInfo group s by s.Salary

对应Lambda:SalaryInfo .GroupBy (s => s.Salary)

对应SQL:select Salary from  SalaryInfo group by Salary

4、join关键字

需求根据成绩表id,对学生表进行关键

Linq: from s in StudentInfo join c in ScoreInfo on s.ScoreId equals  c.ScoreId  select new {s, c}

对应Lambda:StudentInfo
   .Join (
      ScoreInfo,
      s => s.ScoreId,
      c => c.ScoreId,
      (s, c) =>
         new 
         {
            s = s,
            c = c
         }
   )

对应SQL:

SELECT [t0].[StudentId], [t0].[ScoreId], [t0].[SName], [t0].[SAge], [t0].[SSex], [t0].[SPhone], [t1].[ScoreId] AS [ScoreId2], [t1].[Chinese], [t1].[Math], [t1].[English]

FROM [StudentInfo] AS [t0]
INNER JOIN [ScoreInfo] AS [t1] ON [t0].[ScoreId] = [t1].[ScoreId]

5、GroupJoin关键字

GroupJoin操作符常应用于返回“主键对象-外键对象集合”形式的查询,如成绩表主键---该主键下的所有学生信息

Linq:from s in ScoreInfo
join c in StudentInfo on s.ScoreId equals c.ScoreId into g
select new {s.ScoreId, list = g}

对应Lambda:ScoreInfo
   .GroupJoin (
      StudentInfo,
      s => s.ScoreId,
      c => c.ScoreId,
      (s, g) =>
         new 
         {
            ScoreId = s.ScoreId,
            list = g
         }
   )

对应SQL:

SELECT [t0].[ScoreId], [t1].[StudentId], [t1].[ScoreId] AS [ScoreId2], [t1].[SName], [t1].[SAge], [t1].[SSex], [t1].[SPhone], (
SELECT COUNT(*)
FROM [StudentInfo] AS [t2]
WHERE [t0].[ScoreId] = [t2].[ScoreId]
) AS [value]
FROM [ScoreInfo] AS [t0]
LEFT OUTER JOIN [StudentInfo] AS [t1] ON [t0].[ScoreId] = [t1].[ScoreId]
ORDER BY [t0].[ScoreId], [t1].[StudentId]

Linq之关键字基本查询的更多相关文章

  1. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  2. LINQ中的一些查询语句格式

    LINQ的基本格式如下所示:var <变量> = from <项目> in <数据源> where <表达式> orderby <表达式> ...

  3. LINQ(语言集成查询)

    LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作 ...

  4. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  5. LINQ驱动数据的查询功能

    一.LINQ概念 LINQ是微软在.NetFramework3.5中新加入的语言功能,在语言中以程序代码方式处理集合的能力. 1.1 LINQ VS 循环处理 在我刚工作时候,对于集合对象的处理一般是 ...

  6. Linq to 泛型集合查询集合包括大写M和年龄小于等于18

    #region Linq to 泛型集合查询集合包括大写M和年龄小于等于18            //List<Student> list = new List<Student&g ...

  7. 高性能mysql-----MySQL_explain关键字分析查询语句(一)

    转载地址:https://www.cnblogs.com/xpp142857/p/7373005.html   MySQL_explain关键字分析查询语句 通过对查询语句的分析,可以了解查询语句的执 ...

  8. MySQL_explain关键字分析查询语句

    版权声明:本文为博主原创文章,转载请注明出处. 通过对查询语句的分析,可以了解查询语句的执行情况.MySQL中,可以使用EXPLAIN语句和DESCRIBE语句来分析查询语句. EXPLAIN语句的基 ...

  9. LINQ中的"延迟查询"特性【转】

    本文转载自:LINQ中的"延迟查询"特性 详细了解“延迟查询”:C#学习笔记(八)—–LINQ查询之延迟执行 很多标准查询操作符的设计原型都是返回一个IEnumerable< ...

随机推荐

  1. Jenkins + Maven + Ansible + Tomcat 实现JAVA代码自动部署

    自动部署过程: jenkins从svn拉取代码,调用maven去打war包,用ansible去解压war包,最后重启tomcat. 前情回顾:在前面的文章我的环境已经有Jenkins+ansible ...

  2. 写具有良好风格的ABAP代码

    编程风格是一个经久不衰的话题,大家所公认的事实是:一个良好的编程风格会带来很多的好处.而对于“良好”的标准,则众说纷纭,莫衷一是.编程风格在ABAP程序中当然也有着重要的意义,因为很少看到专门针对AB ...

  3. How to image a CD/DVD ROM and generate hash value

    Someone ask me how to image a CD/DVD ROM and generate hash value in the same time. A small tool call ...

  4. JavaScript ,Python,java,C#,Go系列算法之【插入排序篇】

    常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法. ...

  5. 如何将网站升级为HTTPS协议?

    基本概念: HTTP: 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少. HT ...

  6. java容器类

    一.  容器类: 下图摘自<Java编程思想>,很好地展示了整个容器类的结构. 由上图可知,容器类库可分为两大类,各自实现了Collection接口和Map接口,下面就常见的类进行一下分类 ...

  7. DDD领域驱动 (一)

    说道DDD不得不说传统的架构与DDD的架构区别. 传统的架构不外乎就是三层,而在这三层里面又不断的细分,始终没有达到想要的效果,那么为什么当时还是采用三层. 当然在DDD没有提出的时候三层是大多数人的 ...

  8. 【http】http的方法,状态码和组成部分

    Http(Hypertext Transfer Protocol) HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传 ...

  9. 开涛spring3(6.1) - AOP 之 6.1 AOP基础

    6.1.1  AOP是什么 考虑这样一个问题:需要对系统中的某些业务做日志记录,比如支付系统中的支付业务需要记录支付相关日志,对于支付系统可能相当复杂,比如可能有自己的支付系统,也可能引入第三方支付平 ...

  10. zabbix server安装详解

    简介 zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以 ...