• Linq专题之Lambda表达式


             这一节我们讲的Lambda表达式跟匿名函数有关。Lambda表达式就是一个匿名函数,它可以包含表达式和语句,并且可以创建委托和表达式树。

           Lambda表达式的组成:

           输入参数、Lambda运算符(=>)、表达式或语句块构成。

           基本形式:

           (input parameters)=>expression。其中input parameters是输入参数,expression表示表达式。输入参数就是我们函数的参数一样,在Lambda运算符的左边,表达式或语句块位于Lambda运算符的右边。Lambda表达式运算符=> 读作"GO To"。

      下面的例子,表示求某个整数的平方:

           x=>x*x; 其中x是输入参数,x*x是表达式。

    1、Lambda表达式的输入参数:

        输入参数,可以是0个,1个,或多个。当输入参数为0个或多于1个时,Lambda运算符左边的括号不能省略。

      x=>x*x; 和 (x)=>x*x;是等价的。当输入参数是0个时,()=>a*b;左边的括号不能省略,当输入参数多余1个时,括号也不能省略,且输入参数之间通过逗号隔开:(x,y)=>x*y;

    2、Lambda表达式的语句

         Lambda右边不但可以是一个表达式也可以是一个语句块。(input paramters)=>{statement;},statement表示语句块,一般语句块由多个表达式或语句组成。Lambda表达式的语法块必须在一对{}里面,如下面的例子: (x,y)=>{int result=x*y; }

    3、Lambda表达式的查询

      这里我们先给大家展示一下用法,可能初学者看不懂没关系,后面我们每个语法都会详细的讲解。

      Lambda表达式最常见的用法就是查询,下面的代码实例中使用Where操作来使用Lambda表达式查询元素,并输出结果。

         (1)创建一个字符串数组 UserNames,该数组包含10个用户名称。

         (2)调用Lambda表达式 "x=>x=="IT少年""查询出名字为"IT少年"的名称保存在结果result中。

         (3)将result输出到窗口。

          

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace LinqDemo
     7 {
     8     class Program
     9     {
    10         static void Main(string[] args)
    11         {
    12 
    13             string[] UserNames = new string[]  { "张三", "李四", "王武", "赵刘", "马云", "IT少年", "范冰冰", "IT少年", "张曼玉", "韩红" };
    14 
    15             var result = UserNames.Where(x => x == "IT少年");
    16 
    17             foreach (var imtem in result)
    18             {
    19                 Console.WriteLine("用户名称:" + imtem);
    20             }
    21             Console.ReadKey();
    22         }
    23 
    24        
    25     }
    26 
    27     
    28 }

    我们数组中设置了2个"IT少年",那么输出窗口中应该是2条数据:

    我们看到了和预想的结果一样。

    4、Lambda表达式的转换

      由于Lambda表达式本身就是一个匿名函数,因此匿名函数可以转换为相应的函数。Lambda表达式"x=>x*x;"可以转换成如下方法:

      delegate int del(int i);

      del mydelegate=x=>x*x;

         int result=mydelegate(5);//result=25

    这里涉及到委托,我们后面再看,这里就暂时不详细说明了。

  • 相关阅读:
    C++ 引用做左值
    C++ 引用本质的详解
    C++ 引用基础
    C语言错误 指针的类型错误
    C++ c++与C语言的区别(三目运算符,const修饰符)
    C++ c++与C语言的区别(struct类型的加强,函数-变量类型加强,bool类型)
    C++ c++与C语言的区别(实用性增强,register关键字增强,全局变量检测增强)
    C++ c++初识
    C语言 Linux内核链表(企业级链表)
    C语言 结构体中属性的偏移量计算
  • 原文地址:https://www.cnblogs.com/yplong/p/5387436.html
Copyright © 2020-2023  润新知