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

  • 相关阅读:
    elasticsearch 中的Multi Match Query
    activiti 流程部署的各种方式
    elasticsearch 嵌套对象之嵌套类型
    elasticsearch Java High Level REST 相关操作封装
    elasticsearch 字段数据类型
    ubuntu 安装 docker
    elasticsearch 通过HTTP RESTful API 操作数据
    facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
    POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
    墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
  • 原文地址:https://www.cnblogs.com/mcgrady/p/2306678.html
Copyright © 2011-2022 走看看