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> ...
随机推荐
- Raft共识算法详解
Raft共识算法 一.背景 拜占庭将军问题是分布式领域最复杂.最严格的容错模型.但在日常工作中使用的分布式系统面对的问题不会那么复杂,更多的是计算机故障挂掉了,或者网络通信问题而没法传递信息,这种情况 ...
- SpringBoot自动配置探究
@SpringBootApplication @SpringBootApplication表示SpringBoot应用,标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就 ...
- GoPath模式和GoMoudle模式的相爱相杀
相信看我文章的文章的童鞋,golang版本已经是1.3版本以上.如果你的版本还停留在1.3以下,那这篇文章可以做为你的提升之法. go moudle的前世今生 前世-gopath gopath是什么 ...
- 【java框架】SpringBoot(5)--SpringBoot整合分布式Dubbo+Zookeeper
1.理论概述 1.1.分布式 分布式系统是若干独立计算机的集合,这些计算机对于用户来讲就像单个系统. 由多个系统集成成一个整体,提供多个功能,组合成一个板块,用户在使用上看起来是一个服务.(比如淘宝网 ...
- 全网最详细的Linux命令系列-cat命令
cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 命令格式: cat [选项] [文件].. ...
- 前端er必须知道的Git地址及常用工具地址
商城篇(找工作必练) 开源商城 推荐指数:5星,掌握了它,可以说,今后工作中的各种需求都不是问题,工作1~2年的也可以学习其中的思路(建议收藏). 这是一个集小程序/公众号/app为一体的商城系统,包 ...
- 【秒懂音视频开发】14_AAC编码
AAC(Advanced Audio Coding,译为:高级音频编码),是由Fraunhofer IIS.杜比实验室.AT&T.Sony.Nokia等公司共同开发的有损音频编码和文件格式. ...
- 201871030106-陈鑫莲 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.学会结对学习,体会结对学习的快乐2.了解并实践结对编程 3.加深对D{0-1}问题的解法的理解4.复习并熟悉P ...
- 北航OO第四单元作业总结(4.1~4.3)及课程总结
前言 在学习过JML规格描述语言之后,本单元进行了UML(Unified Modeling Language)的学习.和JML单纯用语言描述的形式不同,UML通过可视化的图形形式,对一系列有关类的元素 ...
- OO结课了,狂喜
OO结课了,狂喜 哈哈哈哈哈 哈哈哈 哈哈 哈 第十三次作业 UML类图 简要分析: 本次作业是对UML类图进行解析,给到的接口里面已经有了很多类了,但是自带的类肯定是没有反应这些类的结构的.所以就自 ...