PDC 05 上揭露了C# 3.0 及Linq Project,什么是Linq 呢? 简单地说,Linq 是一个语言层级的查询语法Library,它可以让我们以类SQL 语法的方式来查询语言中的变数,例如阵列,Collections. 以实例来说:

static void ObjectQuery()
{
var people = new List()
{
new Person { Age=12, Name="Bob" },
new Person { Age=18, Name="Cindy" },
new Person { Age=13 }
};
var teenagers = from p in people where p.Age > 12 && p.Age < 20 select p;
Console.WriteLine("Result:");
foreach(var val in teenagers)
{
Console.WriteLine("> Name = {0}, Age = {1}", val.Name, val.Age);
}
Console.ReadLine();}

class Person
{
public int Age;
public string Name;
}

Person是一个类,ObjectQuery 函式中以Generic List建立了一个Person的Collection,此处的var 类型是C# 3.0新增的类型, 从语言面来看,这个类型可以被指定为任何类型,就像是Variant一样,从Complier面来看,它是一个Lazy-determine类型,由 Complier在编译期间来决定真正的类型,接下来的奇特语法就是Linq。

var teenagers = from p in people where p.Age > 12 && p.Age < 20 select p;

是不是觉得很像SQL呢? 这段程序代码的意思是,由people中选出Age大于12小于20的元素,除了这种简单的查询之外,Linq 也支持Join,Distinct等语法。
基本上Linq只是一组Library,C# 3.0及VB.NET 9.0的Complier利用了这个Library来实现上面的新语法,所有的特殊语法都会被编译器编成使用Linq Library的程序。

Linq 让程序语言又进化了。


Posted on 2007-05-10 08:17  李通通  阅读(744)  评论(0编辑  收藏  举报