Linq语法小结:
有两种形式的语法可供我们在写Linq查询时使用,分别是“查询语法”、“方法语法”。
1)先看个列子,有个直观认识
int[] arr = { 12, 2,45,34,23,18,4};
//查询语法形式(推荐使用这种)、返回的是一个可枚举类型
IEnumerable<int> results = from temp in arr
where temp > 20
select temp;
// 方法(又叫做标准查询运算符)语法形式
int max = arr.Max();
2)详细说明:
a、查询语法形式:
必须了解的一些语句:from、select|group (开始结束)是必须滴,查询体中可选的语句有where、from、let、join、into,
还有匿名类型,如 var person=new{Name='ls',Age=24} 这里常用在select语句中
b、标准查询运算符(即方法语法的形式):所有的查询运算符(方法)都在Sysytem.Linq.Enumerable中声明了,是为IEnumerable<T>扩张的一些方法
必须要了解的:被查询的集合对象叫做“序列”,它必须实现IEnumerable<T>接口(为什么?因为这些运算符即方法都是IEnumerable<T>这个泛型接口的扩展方法(在Enumerable类中对其扩展的));标准查询运算符使用方法语法(可以看成一回事);一些运算符返回的是可枚举类型(如where),也可能是个标量(如count返回的是整形)。返回标量的运算符立即执行,返回可枚举类型的会被延迟迭代,即调用变量时才调用。
还有匿名方法,这里常用在标准查询运算符的方法参数中(委托类型的参数):delegate(参数列表){方法体}
匿名方法常用Lambada表达式代替:(输入参数)=>expr