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表达式的语句

扫描二维码关注公众号,回复: 1586544 查看本文章

     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

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

每天早上敲醒自己的不是闹钟,是夢想!

猜你喜欢

转载自blog.csdn.net/weixin_42339460/article/details/80665503