教你如何实现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 numbers where (num% 2) ==
  0 select num;
                  // 执行查询  
                  foreach(int num in numQuery)
                  {
                         Console.write("{0,1}",num);
                  }
        }
}

实现LINQ查询语句之数据源:

上面示例中,数据源是一个数组,隐式支持泛型IEnumerable(T)接口,而支持IEnumerable(T)或派生 接口的类型称为"可查询类型"。因此数组即可用LINQ进行查询。

如果数据源还没有作为可查询类型出现在内存中,则LINQ提供程序必须以此方式表示数据源。例 如,LINQ to XML将 xml文档加载到可查询的XElement类型中:

using System.Xml.Linq
XElement contacts = XElement.Load(@"c:\my.xml");//XElement 表示一个xml元素

在LINQ to SQL 中,必须先创建对象关系映射,然后针对这些对象编写查询。LINQ会处理对象查询与 数据库间的通信。

using System.Data.Linq;
DataContext db = new DataContext(@"c:\northwind.mdf");

实现LINQ查询语句之创建查询:

查询要先存储在查询变量中,并用查询表达式进行初始化。这个查询变量不执行任何操作也不返回数 据,只有在执行查询时用来存储为生成结果而必须的信息。

实现LINQ查询语句之执行查询:

上例中使用foreach的地方就是检索查询结果的地方,它在创建后才执行,因此称为延迟执行,num保 存返回的值。

当需要用到聚合函数查询时,则是强制立即执行

var numQuery = from num in numbers where (num%2) == 0 select num;
int evenNumCount = evenNumCount.Count();

若普通查询也要立即执行,可以在查询语句后调用ToList()或ToArray()方法。

以上就是对如何实现LINQ查询语句的简单介绍。

时间: 2024-12-21 20:35:59

教你如何实现LINQ查询语句的相关文章

Linq 能提取一个以查询语句作为参数的方法吗?

问题描述 protectedvoidPage_Load(objectsender,EventArgse){string查询语句一=*****************;string查询语句二=*****************;if(true)数据绑定(查询语句一);else数据绑定(查询语句二);}void数据绑定(string查询语句){//对控件进行数据绑定} 解决方案 解决方案二:什么意思??解决方案三:引用1楼yuankaiwsl的回复: 什么意思?? protectedvoidPage

LINQ查询操作中的类型关系

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

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

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

Javascript实现Linq查询方式

Linq是.net平台一个重要的技术,全称Language Integrated Query.通过构建快速查询语句,可快速从数据库或集合中筛选数据集.以查询数据库相同的方式操作内存数据.       在ECMAScript 5th以后的版本中,Javascript实现了有限的有限的Linq查询方式,包括forEach, every, some, filter, map, reduce and reduceRight.        首先需要说明,以上这些方法并不是跨浏览器的,对版本有相应的限制.

LINQ 查询语法

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

Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 Linq,而只能通过构造底层查询树的接口来完成了.由于开发者的聚合查询的需求越来越多,所以本周我们将这部分进行了增强. 接下来,本文将说明 Rafy 框架原来支持的 Linq 语法,以及最新加入的聚合查询支持及用法.   使用 Linq 查询的代码示例 public WarehouseList G

linq查询为什么出错

问题描述 想使用linq技术操作xml文件,其他功能都能使用,就是无法使用查询语句,用了一个最简单的例子还是有错.int[]arr=newint[]{8,5,89,3,56,4,1,58};varm=fromninarrwheren<5orderbynselectn;foreach(varninm){Console.WriteLine(n);}错误信息如下:D:WebSitenetworkgraph副本Default3.aspx.cs(148,22):错误CS1002:应输入;D:WebSite

关于sql查询语句请教各位大神。

问题描述 关于sql查询语句请教各位大神. StringBuffer sqlnumBuf = new StringBuffer("" SELECT COUNT(A.DJBH) FROM ( ""); sqlnumBuf.append("" SELECT E.XMBHE.DJBHE.DJLBE.BDJEE.CUSTNME.NAME1E.LIFNRE.BDYHJEE.BDJSJEE.DMMCE.BRANDE.DQZTE.FKDHT.FJET.FBLT

方法-c# linq 查询问题 ,谢谢。

问题描述 c# linq 查询问题 ,谢谢. purchase = (from val in lcd.MD_Purchase where val.money_lkje > 0 && val.companycode == companycode && val.date_jsrq >= bd && val.date_jsrq <= ed group val by new { companycode = val.companycode, good