zoukankan      html  css  js  c++  java
  • 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表达式,有不对的地方或者需要补充的地方希望大家来共同讨论,明天将会总结扩展方法的部分。

  • 相关阅读:
    DOS系统功能调用与BIOS中断调用 [转自KingofCoders]
    纯手工保护光盘数据(转)
    程序员不错的建议【转】
    初识逆向技术(转)
    Notepad++插件推荐JSMin
    jQuery Ready 与 Window onload 的区别
    Javascript typeof和instanceof判断数据类型
    浅谈Javascript 中几种克隆(clone)方式
    Javascript Array sort排序问题
    不同浏览器对display为none元素的图片处理不一样
  • 原文地址:https://www.cnblogs.com/mcgrady/p/2306678.html
Copyright © 2011-2022 走看看