这一节我们讲的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. jquery.jqzoom.js图片放大镜

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

  2. 【News】SpagoBI中国官方微信对外发布

    爱数据,爱分析,爱达比 致力于国际优秀开源BI应用在中国的普及推广,用数据开启中小企业智慧之门: 扫描上图二维码,关注SpagoBI中国官方微信,2015年8月18日将在腾讯课堂.百度传课.网易云课堂 ...

  3. wordpress自动保存远程图片插件 DX-auto-save-images

    wordpress自动保存远程图片插件DX-auto-save-images 解决了保存文章就可以自动将远程图片保存到你的服务器上了. 具体操作步骤如下: 1.安装启用wordpress自动保存远程图 ...

  4. How to get URL parameters with Javascript?

    function getURLParameter(name) { return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '( ...

  5. vs多项目模板及add-in开发

    本文分2部分 第一为自定义多项目模板 第二为vs add-in开发 效果图 1.自定义模板 2. 工具菜单 3.窗口 4.工程 5.文件 ... 一. 多项目模板 单项目模板做起来很简单 选中一个项目 ...

  6. 给animator动态添加事件

    using UnityEngine; using System.Collections; public class setAnimationEvent : MonoBehaviour { public ...

  7. [转]优秀Python学习资源收集汇总

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  8. PL/SQL异常

    CASE_NOT_FOUND CASE selector WHEN selector_value_1 THEN statements_1 WHEN selector_value_2 THEN stat ...

  9. Warning: Multiple build commands for output file /xxx

    xcode中 有时候会报一个警告: [WARN]Warning: Multiple build commands for output file /xxx 要解决这个问题很简单: 1.选择你的工程 2 ...

  10. HIVE: Map Join Vs Common Join, and SMB

    HIVE  Map Join is nothing but the extended version of Hash Join of SQL Server - just extending Hash ...