1.3 LINQ查询
LINQ最具突破性的优势在于将文本查询与对象操作完美集成,它让查询数据和操作对象一样安全和轻松。查询(Query)是LINQ的核心概念之一。
传统意义上的数据查询语言,通常是比较易懂,具有一定语义的文本。
例如,在SQL查询语法中,用如下的SQL语句从数据库表Student中查询所有学生的姓名。传统的查询语言,通常由查询关键字来定义特定的功能,指定数据源、查询结果、筛选条件等。
例如,下面代码中的select和from是关键字,分别用来指定要查询的结果和数据源:
select Student.Name from Student
LINQ中的查询和传统的查询有一些相似之处,它同样可以采用具有一定语义的文本来表示,就如上一篇《1.2 如何使用LINQ》中示例代码的queryResult一样,这种方式在LINQ中成为查询表达式。
另外,LINQ中的查询同时是一个类型为IEnumerable<T>或IQueryable<T>的对象,所以可以通过一种使用对象的方式(使用属性、调用方法等)使用它,这种方式在LINQ中称为查询方法。
LINQ查询的目的是从指定的数据袁总查询满足符合特定条件的数据元素,并且根据需要对这些查询的元素进行排序、连接等操作。所以LINQ查询包括如下几个主要元素:
| 数据源 |
数据远表示LINQ查询将从哪里查找数据,它通常是一个或多个数据集,每个数据集包含一系列的元素。 数据集是一个类型为IEnumerable<T>或IQueryable<T>的对象,可以对它进行枚举,遍历每一个元素。 此外,它的元素可以是任何数据类型,所以可以表示任何数据的集合。 |
| 目标数据 |
数据源中的元素并不一定是查询所需要的结果。 例如,对于一个学生信息集合中: 查询A只是查询学生的姓名,查询B要下旬学生的姓名和各科成绩,查询C则需要学生各科成绩的总分(需要另外计算),而不是原始数据中的各科成绩。 目标数据用来指定查询的具体想要的是什么数据。在LINQ中,它定义了查询结果数据集中元素的具体类型。 |
| 筛选条件 |
筛选条件定义了对数据源中元素的过滤条件,只要满足条件的元素才作为查询结果返回。 筛选条件可以是简单的逻辑表达式表示,也可以用具有复杂逻辑的函数表示。 |
| 附加操作 |
附加操作表示一些其他的具体操作。 比如,对查询结果进行排序、计算查询结果的最值和求和、对查询结果进行分组等。 |
其中,数据源和目标数据是LINQ查询的必备元素,筛选条件和附加操作是可选元素。
再比如上一篇《1.2 如何使用LINQ》示例代码,就是一个只包含了from和select最基础的LINQ查询。
内容参考:
《精通C#5.0与.NET 4.5高级编程——LINQ、WCF、WPF和WF》
【来自 孤影'Blog:http://www.cnblogs.com/LonelyShadow,码字不容易,转载请注明出处。】
1.3 LINQ查询的更多相关文章
- Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询
问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...
- LinqToDB 源码分析——轻谈Linq查询
LinqToDB框架最大的优势应该是实现了对Linq的支持.如果少了这一个功能相信他在使用上的快感会少了一个层次.本来笔者想要直接讲解LinqToDB框架是如何实现对Linq的支持.写到一半的时候却发 ...
- Linq查询基本操作
摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...
- C#基础:LINQ 查询函数整理
1.LINQ 函数 1.1.查询结果过滤 :where() Enumerable.Where() 是LINQ 中使用最多的函数,大多数都要针对集合对象进行过滤,因此Where()在LINQ 的操作 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7 在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ ...
- Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)
为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...
- c# Linq查询
c#提供的ling查询极大的遍历了集合的查询过程,且使用简单方便,非常的有用. 下面将分别用简单的例子说明:ling基本查询.延迟查询属性.类型筛选.复合from字句.多级排序.分组查询.联合查询.合 ...
- Linq查询表达式
目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...
- .NET LINQ查询操作中的类型关系
LINQ 查询操作中的类型关系 若要有效编写查询,您应该了解完整的查询操作中的变量类型是如何全部彼此关联的. 如果您了解这些关系,就能够更容易地理解文档中的 LINQ 示例和代码示例. 另外 ...
- .NET LINQ查询语法与方法语法
LINQ 查询语法与方法语法 通过使用 C# 3.0 中引入的声明性查询语法,介绍性 LINQ 文档中的多数查询都被编写为查询表达式. 但是,.NET 公共语言运行时 (CLR) 本身并不具 ...
随机推荐
- 理解git经常使用命令原理
git不同于类似SVN这样的版本号管理系统,尽管熟悉经常使用的操作就能够满足大部分需求,但为了在遇到麻烦时不至于靠蛮力去尝试,了解git的原理还是非常有必要. 文件 通过git管理的文件版本号信息所有 ...
- Arduino 数码管LED驱动器 阵列方法
样品谈到最后一个驱动程序LED数码管,采用了最简单的解决方案之一,对于每一个LED高低电平控制,这样的好处是每个LED控制可检.避免短路造成的错觉,因为,但是对于数字的变化是,它是多余的写,因此,这种 ...
- 图解SSIS监视文件夹并自动导入数据
原文:图解SSIS监视文件夹并自动导入数据 演示案例:让系统自动监视文件夹,并把文件夹下面的excel文件导入到sql中,之后清空目录.这个过程以往都需要写程序来实现或者定时执行,现在可以用ssis来 ...
- 获得span里面价值(在特殊情况下 )
如何获得A? <div class="warpper"> <span class="content"> A <span>12 ...
- twitter接口开发
前一阵子研究了下twitter接口,发现网上的资料不是很多.遂花了些心血,终于有所收获~ 现在有时间赶紧整理出来便于自己以后查阅,也想帮助有困难的同学们.废话不多说,现在就以最简洁的方式开始了.注意: ...
- 关于在 xmlSPY 出现的错误 DOCTYPE-EXternalID的名称必须既是SYSTEM 又是PUBLIC?(转)
最近我在做学习xml时,遇见一个问题,我本用的是2009 xml spy后来老是出现问题 ,就是不能通过,后来我上网查了一下,发现是以一问题,不管是在2006中还是在2009中,都会出现这样的问题,要 ...
- JMeter模拟多个用户进行登录
1.将用户名密码保存在cvs或txt文件中格式为 username1,password1 username2,password2 username3,password4 一行一个,用户名和密码之间使用 ...
- Git 1.9.5.msysgit.1
Git 1.9.5.msysgit.1 发布,现已提供下载:https://github.com/msysgit/git/archive/v1.9.5.msysgit.1.zip. Git是一个开源的 ...
- sqlplus登录问题
问题1.sqlplus login -- SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory 在/e ...
- Linux GPIO 注册和应用
Linux GPIO 注册和应用 Linux Kernel, GPIO, ARM 于Linux kernel代码.经常使用 GPIO 作为一个特殊的信号,如芯片片选信号. GPIO 功能应用,我们经常 ...