LINQ之查询语法
新开一节LINQ的入门讲解。
LINQ(Language Integrated Query)语言集成查询,是C#语言的扩展,它的主要功能是从数据集中查询数据,就像通过sql语句从数据库查询数据一样(本节讲的linq查询语法跟sql语法也是类似),LINQ将这一形式实现在了C#中,熟悉JAVA的同学,LINQ就是JAVA中的StreamAPI。
下面先看一个例子:
int[] vs = { 1, 2, 3, 4, 5 };
var a = from v in vs
where v > 2
select v;
foreach (var t in a)
{
Console.Write(t);
}
运行结果为:
以上代码的目的是输出数组中大于2的值,第2-4行就是我们本节要讲的LINQ查询语法。它们很像sql语句,其实并不是,from,where等是C#中的关键字,但可以稍微使用sql来理解这种形式。
使用var这个关键字来保存这个linq逻辑,当然也可以理解为var保存了数据,但这并不准确,其实linq中存在一种延迟查询的机制,当我们在调用foreach循环的时候,才会真正执行linq逻辑去查询数据,在没有调用foreach之前,内存中是没有查询到的数据的,注意,foreach不属于linq,它只是用来展示结果。
from
对于一个可枚举的数据(即继承了IEnumerable接口),可以进行linq查询,使用from 变量名 in 数据源 的形式(from必须作为开头),定向一个查询,以上述代码为例,变量v代表数组vs中的每一个数据,它类似foreach括号里的代码,这表明,将来会一个个遍历数组里边的数据,定义变量名是为了供后续的限定查询使用。
where
where就很容易理解,跟sql语句的语法一样,用于筛选数据,它可以用于任意的布尔表达式上,对于结果为true的数据进行归并,它是可选的,但是我们一般都会用到,没有where,返回的永远都是所有数据。
select
select用于指定结果集中包含哪些数据,也可以理解为将查到的数据返回出去,它是必要的,如果是查询对象的集合,可以通过select指定返回对象的某个属性值,这也是select重要的原因。
group
group用于分组数据,对于一个linq查询,总要以select或者group 结尾,group要配合by ,语法为group 分组对象 by 分组依据 现在将以上代码改写一下,看一下group具体用法:
int[] vs = { 1, 2, 3, 4, 5 };
var a = from v in vs
where v > 1
group v by v > 3;
foreach (var t in a)
{
foreach (var i in t)
{
Console.Write(i);
}
Console.WriteLine();
}
运行结果为: 
将结果分组,大于3的一组,小于3的一组,结果是一个二维数组。
其它
LINQ共有50个查询关键字,下面列举其它的一些常用查询语法,欲了解更多语法,请查阅相关文档。
| join…in…on…equals... | 关联多个数据源关联多个数据源 |
| let | 标识存储子表达式的结果变量 |
| orderby、descending | orderby 标识的变量升序显示,变量名后加descending标识降序 |
| into | into后可以新开一个查询,通过into引用新查询的结果 |
这是我的公众号二维码,获取最新文章,请关注此号

LINQ之查询语法的更多相关文章
- LINQ标准查询操作符详解(转)
一. 关于LINQ LINQ 英文全称是“Language-Integrated Query”,中文为“语言集成查询”,它是微软首席架构师.Delphi 之父和C# 之父——Anders ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
- .NET LINQ查询语法与方法语法
LINQ 查询语法与方法语法 通过使用 C# 3.0 中引入的声明性查询语法,介绍性 LINQ 文档中的多数查询都被编写为查询表达式. 但是,.NET 公共语言运行时 (CLR) 本身并不具 ...
- LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法
介绍 ·Select - Select选择:延迟 ·Where - Where查询:延迟 ·OrderBy - 按指定表达式对集合正序排序:延迟 ·OrderByDescend ...
- LINQ to Entities 查询语法
转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET ...
- 让LINQ中的查询语法使用自定义的查询方法
使用LINQ时有两种查询语法:查询语法和方法语法 查询语法:一种类似 SQL 语法的查询方式 方法语法:通过扩展方法和Lambda表达式来创建查询 例如: List<, , , }; //查询语 ...
- LINQ to Objects系列(2)两种查询语法介绍
LINQ为我们提供了两种查询语法,分别是查询表达式和查询方法语法.这篇文章分为以下几个方面进行总结. 1,一个包含两种查询语法的简单示例 2,查询表达式的结构 3,查询方法相关的运算符 一个包含两种查 ...
- linq查询语法和方法-簡單用法
來自:http://www.cnblogs.com/knowledgesea/p/3897665.html 1.简单的linq语法 //1 var ss = from r in db.Am_recPr ...
- LINQ 学习路程 -- 查询语法 LINQ Query Syntax
1.查询语法 Query Syntax: from <range variable> in <IEnumerable<T> or IQueryable<T> ...
随机推荐
- PTE 准备之 Read aloud
Read aloud A text appears on screen.Read the text aloud rext up tp 60 words varies by task, dependin ...
- python网络编程-TCP服务端的开发
#TCP服务端开发 2 #方法说明 3 """ 4 bind(host,port)表示绑定端口号,host是ip地址,ip地址一般不进 行绑定,表示本机的任何一个ip地址 ...
- oCPC中转化率模型与校准
翻看日历时间已经来到了2021年,也是共同战役的第二年,许久没有更新文章了,在与懒惰进行过几次斗争都失利之后,今天拿出打工人最后的倔强,终于收获了一场胜利.闲话不多说,今天咱们重点聊聊oCPC中转化率 ...
- 99%的Python用户都不知道的f-string隐秘技巧
f-string想必很多Python用户都基础性的使用过,作为Python3.6版本开始引入的特性,通过它我们可以更加方便地向字符串中嵌入自定义内容,但f-string真正蕴含的功能远比大多数用户知道 ...
- Kafka和Stream架构的使用
Kafka的单节点运行 启动服务 Kafka 使用 ZooKeeper 如果你还没有 ZooKeeper 服务器,你需要先启动一个 ZooKeeper 服务器. 您可以通过与 kafka 打包在一起的 ...
- Leedcode算法专题训练(二分查找)
二分查找实现 非常详细的解释,简单但是细节很重要 https://www.cnblogs.com/kyoner/p/11080078.html 正常实现 Input : [1,2,3,4,5] key ...
- 在一些64位的glibc的payload调用system函数失败问题
在一些64位的glibc的payload调用system函数失败问题 当我在做题的时候就发现一个奇怪的事情,我在ubuntu16.04运行成功的exp在ubuntu 18.04却报出了timeout: ...
- Day05_24_继承
继承 什么是继承? 继承本质上是对某一批类的抽象,从而实现对现实世界更好的建模.继承是类和类之间的一种关系,除此之外类和类之间的关系还有依赖.组合.聚合等. 继承就是子类(派生类)继承父类(基类)的特 ...
- Erda MSP 系列 - 以服务观测为中心的 APM 系统设计:开篇词
本文首发于 Erda 技术团队知乎账号,更多技术文章可点击 Erda 技术团队 作者:刘浩杨,端点科技 PaaS 技术专家,微服务治理和监控平台负责人,Apache SkyWalking PMC成员 ...
- I - 树的直径 POJ - 1383
The northern part of the Pyramid contains a very large and complicated labyrinth. The labyrinth is d ...