这一节我们讲的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输出到窗口。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace LinqDemo
{
class Program
{
static void Main(string[] args)
{ string[] UserNames = new string[] { "张三", "李四", "王武", "赵刘", "马云", "IT少年", "范冰冰", "IT少年", "张曼玉", "韩红" }; var result = UserNames.Where(x => x == "IT少年"); foreach (var imtem in result)
{
Console.WriteLine("用户名称:" + imtem);
}
Console.ReadKey();
} } }

我们数组中设置了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

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

Linq专题之Lambda表达式的更多相关文章

  1. Linq快速入门——Lambda表达式的前世今生

    Linq快速入门——Lambda表达式的前世今生   Lambda表达式其实并不陌生,他的前生就是匿名函数,所以要谈Lambda表达式,就不得不谈匿名函数,要谈匿名函数,那又要不得不谈委托. 何为委托 ...

  2. 关于Linq中的Lambda表达式中OrderBy的深入理解

    起因:就是一段Linq语句,OrderBy里面的i是什么? IQueryable<Student> slist = (from s in EFDB.Student select s). O ...

  3. Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式

    当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...

  4. Linq专题列表

    什么是Linq? Linq(Language-Integrated Query),即语言集成查询.是微软的一项新技术,能够将查询功能直接引入.NET Framework3.5 所支持的编程语言(C#, ...

  5. LINQ教程三:Lambda表达式解剖

    C#3.0(.NET3.5)中引入了Lambda表达式和LINQ.Lambda表达式是使用一些特殊语法表示匿名方法的较短方法. 最基本的Lambda表达式语法如下: (参数列表)=>{方法体} ...

  6. LINQ和Lambda表达式

    前言 前段时间接触了一种新的表达式,但是不知道这个是什么意思,所以就先站在巨人的肩膀用了,现在听师哥说这种写法是Lambda表达式.我一直以为,这个Lambda表达式和LINQ查询有异曲同工之妙,可惜 ...

  7. APS.NET MVC + EF (01)---Linq和Lambda表达式

    1.1 Linq介绍 LINQ全称 Language Integrated Query(语言集成查询).为我们提供一种统一的方式来查询和操作各种数据. LINQ to Object:是针对实现了IEn ...

  8. 转:【More Effective C#】Lambda表达式优化

    http://www.cnblogs.com/kongyiyun/archive/2010/10/19/1855274.html 使用Lambda表达式将会造成Lambda表达式主题部分的代码重复. ...

  9. Lambda表达式的本质是匿名函数

    1.委托的简介: 委托可以简单的理解为方法的列表,添加的方法的参数类型,个数,顺序必须和委托一致, 也就是说委托起到了托管方法的作用,并且约束了要调用的方法. //1声明委托 public deleg ...

随机推荐

  1. Halcon相机标定

    摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径       'E:/calibration_description/caltab_123mm.descr:为标定 ...

  2. 用Java实现约瑟夫环

    约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重 ...

  3. session204 imessageApp sticker part I要点

    session204 imessageApp sticker partI 工程文件:https://developer.apple.com/library/prerelease/content/sam ...

  4. 使用Eclipse进行远程调试【转】

    今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/arc ...

  5. Net框架下-ORM框架LLBLGen的简介

    >对于应用程序行业领域来说,涉及到Net框架的,在众多支持大型项目的商用ORM框架中,使用最多的目前了解的主要有三款: 1.NHibernate(从Java版移植来的Net版). 2.微软的EF ...

  6. 【Math】余弦相似度 和 Pearson相关系数

    http://cucmakeit.github.io/2014/11/13/%E4%BF%AE%E6%AD%A3%E4%BD%99%E5%BC%A6%E7%9B%B8%E4%BC%BC%E5%BA%A ...

  7. 操作系统性能分析与优化V1.0

    操作系统性能分析与优化V1.0 : http://www.docin.com/p-759561760.html

  8. 编译升级php之路(5.5.7 到 5.5.37)

    为在一台旧服务器上能使用slim,共经历了: 1.安装composer(需要高版本php,原来是5.5.7) 2.升级php版本到5.5.37(编译出错,准备使用docker) 3.升级centos内 ...

  9. WebApp MVC 框架的开发细节归纳

    在前文<WebApp MVC,“不一样”的轻量级互联网应用程序开发框架>介绍了WebApp MVC的技术实现以及如何使用,而在本章进一步归纳了使用框架开发的一些细节,也给我们在开发具体功能 ...

  10. 又是一个小正则replace

    var a = "http://www.xx.com?id=111&-deb"; var b = "http://www.xx.com?-deb&id=1 ...