LINQ基本概念:
LINQ(Language INtegrated Query)是Language Integrated Query的简称,它是集成在.NET编程语言(例如:C#、VB.NET等)中的一种特性,目的是为.NET Framework提供更加通用和便利的信息查询方式,并且它对数据源提供了广泛的支持,而不仅仅局限于关系型数据库和XML。
LINQ 提供了一条更常规的途径即给 .Net Framework 添加一些可以应用于所有信息源( all sources of information )的具有多种用途( general-purpose )的语法查询特性( query facilities ),这是比
向开发语言和运行时( runtime )添加一些关系数据( relational )特性或者类似 XML 特性( XM
L-specific )更好的方式。这些语法特性就叫做 .NET Language Integrated Query (LINQ) 。包含 DLinq 和 XLinq.
语法实例:
C#3.0 LINQ 查询语法
首先来看一个很简单的LINQ查询例子,查询一个int 数组中小于5的数字,并按照大小顺序排列:
class Program
{
static void Main(string[] args)
{
int[] array= new int[] { 8, 5, 89, 3, 56, 4, 1, 58 };
var m = from n in arraywhere n < 5 orderby n select n;
foreach (var n in m)
{
Console.WriteLine(n);
}
Console.ReadLine();
}
}
上述代码除了LINQ查询语法外,其他都是我们所熟悉的语法,而LINQ查询语法跟SQL查询语法很相识,除了先后顺序。
在上面的程序中我们看到 var 关键字,这是2008中的特性之一,隐含类型局部变量(Local Variable Type Inference) 顺便介绍一下吧:
先看一个简单的例子:
var i =25;//int
var j = 1223.56;//double
var k = "Hello";//string
- var为关键字,可以根据后面的初始化语句自动推断类型,这个类型为强类型。
- 初始化语句必须为表达式,不可以为空。且编译时可以推断类型。一旦初始化之后,只可以存储这种类型.
看到这你应该明白了吧,给我的感觉就像 泛型一样,
有人就会问为何 LINQ 查询语法是以 from 关键字开头的,而不是以 select 关键字开头的?select 开头这种写法跟SQL的写法更接近呢?简单来说,为了IDE的智能感知(Intelisence)这个功能,select 关键字放在后面了。
编程语言以 select 开头写LINQ查询语法不是没出现过, select 关键字在前面,在做智能感知(Intelisence)时候就很头大。经过微软IDE组的权衡,确定了把 from 关键字放在最前面。
我们在写到 p in persons 之前,p 的类型是无法推测的,所以写 Select p. 的时候,Name之类的属性不会弹出智能提示来。
这样就需要先去写 From 这句,再回来写 Select。
所以不如就把 Select 写到后面了。于是编程语言中的写法就确定这样来写了。