这一节我们讲的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. 解决Visual Studio 调试时候不能直接访问.json后缀文件的问题

    Web.config中作如下配置: <system.webServer> <staticContent> <mimeMap fileExtension=".js ...

  2. jquery.jqzoom.js图片放大镜

    jqzoom插件实现图片放大镜效果 1. jquery.jqzoom.js //************************************************************ ...

  3. Win7 64位 Visio反向工程(MySQL)

    1 看Office的版本,我安装的是32位的版本,故要去MySQL的官网下载对应32位的ODBC驱动: http://dev.mysql.com/downloads/connector/odbc/ 2 ...

  4. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题

    1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...

  5. Git简记

    1. 如何在GitHub上下载资源? 有2种方法: (1)直接在WebBrowser中下载. 比如要下载 https://github.com/numbbbbb/progit-zh-pdf-epub- ...

  6. 再探 Ext JS 6 (sencha touch/ext升级版) 变化篇 (编译命令、滚动条、控制层、模型层、路由)

    从sencha touch 2.4.2升级到ext js 6,cmd版本升级到6.0之后发生了很多变化 首先从cmd说起,cmd 6 中sencha app build package不能使用了,se ...

  7. CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段

    编程语言的基元类型   某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32();  // a = 0 a = 1 ...

  8. linux硬链接和软链接的区别

    1.原理上: 硬链接(hard link):A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件 ...

  9. 安卓开发笔记——自定义广告轮播Banner(实现无限循环)

    关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...

  10. iOS开发之企业发布无线安装APP

    前提是注册成为企业开发者(¥299),申请到证书并安装到本地,可以正常使用Xcode在IOS移动设备上进行Debug. 首先build看是否报错.如无错 执行下一: 执行Product—Archive ...