msdn的LINQ介绍:http://www.microsoft.com/china/MSDN/library/netFramework/netframework/linqprojectovw.mspx
据黄老师说:LINQ是ADO.NET3的一个子项目,将于.NET 3.5发布,并不是遥遥无期。
先来看一个LINQ示例:
using System.Query;
using System.Collections.Generic;
class app ... {
static void Main() ...{
string[] names = ...{ "Burke", "Connor", "Frank",
"Everett", "Albert", "George",
"Harris", "David" };
IEnumerable expr = from s in names
where s.Length == 5
orderby s
select s.ToUpper();
foreach (string item in expr)
Console.WriteLine(item);
}
}
编译并运行,将输出:
BURKE
DAVID
FRANK
看呐!MS无疑给第三方ORM框架沉重一击,LINQ可以方便且直观地类SQL形式操纵IEnumerable集合和数据。更激动人心的是C#一贯的风格,层层解构,LINQ语法可以用C#基本语法来解释。支持LINQ,用到:
匿名委托类型(方法/函数) C#2语法,省略委托类型定义。
Func 一种委托类型,一般用匿名委托赋值
扩展表达式 含this指针的静态类的静态函数,其中一个参数用this修饰,另一个参数是Func类型。可用实例方法的形式调用。一般用点操作符串联调用。
λ 表达式 Expression类可以解析λ 表达式。匿名委托实例化的简化形式,类似于这种形式:n=>n > 5;其中n是参数。
yield 例:yield return i;延迟返回计算结果。
对象设值实例化 命名属性初始化,调用setter方法用命名参数初始化成员变量。用于实例ORM中对象属性与字段名的映射。集合初始化也可用数组初始化语法。
匿名类型 引入var关键字,根据初始化表达式,编译器智能判断声名的变量所属类型,看起来越来越像脚本语言了。
希望微软的天才们带领C#越走越远。
——简单就是美,26个英文字母是简单的,汉语中博大精深的成语也是简单而且更美的。