LINQ查询操作全面分析

学习LINQ查询时,经常会遇到LINQ查询操作问题,这里将介绍LINQ查询操作问题的解决方法。

语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。

传统上,针对数据的查询都是以简单的字符串表示,而没有编译时类型检查或 IntelliSense 支持。此外,您还必须针对以下各种数据源学习不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。LINQ 使查询成为 C# 和 Visual Basic 中的一等语言构造。您可以使用语言关键字和熟悉的运算符针对强类型化对象集合编写查询。用 C# 语言编写的、不完整的 LINQ 查询,该查询针对 SQL Server 数据库,并具有完全类型检查和 IntelliSense 支持。

LINQ查询操作由以下三个操作组成:

1、获取数据源:支持泛型 IEnumerable(Of (T)) 接口的所有对象都可以作为LINQ的数据源,包括Array、List等。

2、创建查询:指定要从数据源中检索的哪些信息,还可以指定在返回这些信息之前如何对其进行排序、分组或结构化。创建(定义)的查询通常存储在变量中,并不会在定义时马上执行而是在以后执行。所以记住:查询变量本身不会执行任何操作,也不会返回任何数据,它只是存储查询定义。

3、执行查询:执行查询有两种情况,1是延迟执行;2是立即执行。

3.1、延迟执行:查询定义并保存在查询定义变量后,不马上执行,而是在后续需要时才执行。这通常需要使用 For Each 循环(它返回值序列)或应用标准查询运算符。对于值序列,可使用 For Each 循环中的迭代变量(在上一个示例中为 number)访问所检索的数据。

3.2、立即执行:在立即执行过程中,查询在定义时执行。当应用需要访问查询结果的各个元素的方法时,就会触发执行。通常使用能够返回单个值的标准查询运算符之一来强制立即执行。Count、Max、Average 和 First 就属于标准查询运算符。只要应用了这些标准查询运算符以便计算并返回单一实例结果,这些运算符就会立即执行查询。例如:

Dim numbers中的偶数个数 = (From num In numbers _
Where num Mod 2 = 0 _
Select num).Count() 

还可通过对查询(立即执行)或查询变量(延迟执行)调用 ToList 或 ToArray 方法来强制执行查询,如下面的代码所示:

Dim evensList = (From num In numbers _
Where num Mod 2 = 0 _
Select num).ToList() 

以上介绍LINQ查询操作

时间: 2024-11-02 06:45:32

LINQ查询操作全面分析的相关文章

深度看点Linq查询与性能解析

众人对LINQ查询持有不同的态度,有的说容易实现,有的说难操作,那到底是什么样子呢,笔者特地为此做了一个Linq查询与性能分析,请看下文吧. Orcas(VS2008&Framework3.5)给我们带来了很多令人兴奋的新特性,尤其是LINQ的引进,可以说方便了一大批开发人员和框架设计人员.过去,当我们使用O/RMapping的一些框架时,最担心的应该是复杂的查询和数据库操作的性能问题,那么LINQ在这个方面给我们带来了什么呢?从LINQ查询开始说起吧. 一:LINQ查询: 一个项目中,对数据库

LINQ查询介绍

查询是一种从数据源检索数据的表达式.查询通常用专门的查询语言来表示 .随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系 数据库的 SQL 和用于 XML 的 XQuery.因此,开发人员不得不针对他们必须支 持的每种数据源或数据格式而学习新的查询语言.LINQ 通过提供一种跨各种数 据源和数据格式使用数据的一致模型,简化了这一情况.在 LINQ 查询中,始终 会用到对象.可以使用相同的基本编码模式来查询和转换 XML 文档.SQL数据库.ADO.NET 数据集..NET 集合

LINQ查询操作中的类型关系

查询操作中的类型关系 (LINQ) 若要有效编写查询,您应该了解完整的查询操作中的变量类型是如何全部彼此关联的.如果您了解这些关系,就能够更容易地理解文档中的 LINQ 示例和代码示例.另外,还能了解在使用 var 隐式对变量进行类型化时的后台操作. LINQ 查询操作在数据源.查询本身及查询执行中是强类型的.查询中变量的类型必须与数据源中元素的类型和 foreach 语句中迭代变量的类型兼容.此强类型保证在编译时捕获类型错误,以便可以在用户遇到这些错误之前更正它们. 为了演示这些类型关系,下面

LINQ 查询语法

        在LINQ中,数据源和查询结果实际上都是IEnumerable<T>或IQueryable<T>类型对象           LINQ主要的功能就是实现查询,LINQ查询存在以下两种形式.           ⑴ Method Synta (查询方法方式):主要利用 System.Linq.Enumerable 类中定义的扩展方法和Lambda 表达式方式进行查询.它提供了一种增强了程序的可读性的语法,易读易写,写时不容易出错.Visual Studio 2010为

LINQ基本查询操作

下面各主题中提供了更详细的信息:获取数据源 在 LINQ 查询中,第一 步是指定数据源.像在大多数编程语言中一样,在 C# 中,必须先声明变量,才 能使用它.在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 (customers) 和范围变量 (cust). //queryAllCustomers is an IEnumerable<Customer> var queryAllCustomers = from cust in customers select cust; 范围

Rman操作简单分析

http://www.itpub.net/245264.html Rman操作简单分析 在我的上一篇文章中为大家演示了rman 备份恢复的一个特定例子.(参考:http://www.dbanotes.net/Oracle/Rman...lfile_howto.htm)rman 对dbms_backup.restore 的一些特定调用完梢酝üebug 分析出来.通过设置debug 模式,我们可以跟踪到大量的Log,从而为分析提供一定的说明.假定我们提交如下的命令:rman target /

数据点-预编译LINQ查询

在应用程序中使用 LINQ to SQL 或 LINQ to Entities 时,有必要考虑对您 创建并重复执行的任何查询进行预编译.我经常在埋头苦干一项特定任务时忘了 利用预编译查询,等我意识到时为时已晚.这很像"异常处理病",即开发人员 试图在事发后将异常处理强行加入应用程序中. 然而,即使您已经实施了此项重要的性能增强方法,往往也只是徒劳.您可 能会发现预期的性能增强并未实现,但原因(和解决方法)可能仍悬而未决. 在本篇专栏文章中,我首先将解释如何预编译查询,然后将重点讲述在

Oracle 9i中的一个闪回查询操作实例

在利用闪回功能前需要确认: 1.用户有对dbms_flashback包有执行权限! 2.进行闪回查询必须设置自动回滚段管理,在init.ora设置参数UNDO_MANAGEMENT=AUTO,参数UNDO_RETENTION=n,决定了能往前闪回的最大时间,值越大就需要越多Undo空间. Oracle 9i中闪回查询操作实例 查看Oracle中Delete和Commit操作的流程分析 例:Oracle 9i的Flashback Query操作. (1)创建闪回查询用户 SQL> create u

教你如何实现LINQ查询语句

实现LINQ查询语句有三个步骤,他们分别是获取数据源(任何查询的必备工作).创建查询.执行查询 .本文就从这三个方面对实现LINQ查询语句做简单的介绍. 示例: class IntroToLINQ { static void Main() { //获取数据源(此处由一个数组充当) int[] numbers = new int[7]{0,1,2,3,4,5,6}; //创建查询(numQuery 是 IEnumerable 类型) var numQuery = from num in numbe