实现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查询语句的简单介绍。
【编辑推荐】