LINQ学习笔记(3) lambda表达式

  lambda表达式在LINQ中使用非常多,所以要想学好LINQ,那么必须先了解什么是lambda表达式,以及它是如何使用的。

首先们看一个lambda表达式在LINQ查询中的应用的例子,我想通过这个例子我们能够更快地理解lambda表达式。

例如:

 1 class Program
2 {
3 static void Main(string[] args)
4 {
5 int[] numbers = { 2,5,28,31,17,16,42}; //创建数据源。
6

7 var numsMethod = numbers.Where(x => x < 20);//x=>x<20即为lambda表达式。
8

9 foreach (var x in numsMethod) //使用foreach语句遍历结果。
10 {

11 Console.Write("{0}",x);
12 Console.WriteLine();
13 }
14
15 Console.ReadKey();
16 }
17 }

  程序输出结果为:

通过这个例子,我想大家已经看到了lambda表达式在LINQ查询中的使用,那么接下来我们来详细了解一下什么是lambda表达式。

1,什么是lambda表达式?

  据查资料,lambda表达式来源于数学家Alonzo Church等人在1920年到1930年间发明的lambda积分。lambda积分是用于表示函数的一套系统,它使用希腊字母lambda(λ)来表示无名函数。近来,诸如Lisp和其方言的函数式编程语言使用这个术语来表示可以直接用于描述函数定义的表达式,表达式不再需要名字了。

2,lambda表达式的作用?

  简化匿名方法。

3,匿名方法转化为lambda表达式?

  我们可以通过如下步骤将匿名方法转换为lambda表达式。

  1> 删除delegate关键字。

  2> 在参数列表和匿名方法主体之间放lambda运算符=>。lambda运算符读作"goes to"。

  如下代码演示了这种转换。

MyDel del = delegate(int x) { return x + 1; };//匿名方法。将匿名方法赋值给变量del。
MyDel del1 = (int x) => { return x + 1; };//lambda表达式。
MyDel del2 = (x) => { return x + 1; };//lambda表达式。
MyDel del3 = x => { return x + 1; };//lambda表达式。
MyDel del4 = x => x+1;//lambda表达式。

4,lambda表达式的参数列表的要点?

  1> lambda表达式参数列表中的参数必须在参数数量,类型和位置上与委托相匹配。

  2> 表达式的参数列表中的参数不一定需要包含类型(如隐式类型),除非委托有ref或out参数-此时类型是必须的(如显式类型)。

  3> 如果只有一个参数,并且是隐式类型,周围的圆括号可以被省略,否则它就是必须的。

  4> 如果没有参数,必须使用一组空的圆括号。

以上就是今天总结的lambda表达式,有不对的地方或者需要补充的地方希望大家来共同讨论,明天将会总结扩展方法的部分。

原文地址:https://www.cnblogs.com/mcgrady/p/2306678.html