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输出到窗口。
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表达式的更多相关文章
- Linq快速入门——Lambda表达式的前世今生
Linq快速入门——Lambda表达式的前世今生 Lambda表达式其实并不陌生,他的前生就是匿名函数,所以要谈Lambda表达式,就不得不谈匿名函数,要谈匿名函数,那又要不得不谈委托. 何为委托 ...
- 关于Linq中的Lambda表达式中OrderBy的深入理解
起因:就是一段Linq语句,OrderBy里面的i是什么? IQueryable<Student> slist = (from s in EFDB.Student select s). O ...
- Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式
当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...
- Linq专题列表
什么是Linq? Linq(Language-Integrated Query),即语言集成查询.是微软的一项新技术,能够将查询功能直接引入.NET Framework3.5 所支持的编程语言(C#, ...
- LINQ教程三:Lambda表达式解剖
C#3.0(.NET3.5)中引入了Lambda表达式和LINQ.Lambda表达式是使用一些特殊语法表示匿名方法的较短方法. 最基本的Lambda表达式语法如下: (参数列表)=>{方法体} ...
- LINQ和Lambda表达式
前言 前段时间接触了一种新的表达式,但是不知道这个是什么意思,所以就先站在巨人的肩膀用了,现在听师哥说这种写法是Lambda表达式.我一直以为,这个Lambda表达式和LINQ查询有异曲同工之妙,可惜 ...
- APS.NET MVC + EF (01)---Linq和Lambda表达式
1.1 Linq介绍 LINQ全称 Language Integrated Query(语言集成查询).为我们提供一种统一的方式来查询和操作各种数据. LINQ to Object:是针对实现了IEn ...
- 转:【More Effective C#】Lambda表达式优化
http://www.cnblogs.com/kongyiyun/archive/2010/10/19/1855274.html 使用Lambda表达式将会造成Lambda表达式主题部分的代码重复. ...
- Lambda表达式的本质是匿名函数
1.委托的简介: 委托可以简单的理解为方法的列表,添加的方法的参数类型,个数,顺序必须和委托一致, 也就是说委托起到了托管方法的作用,并且约束了要调用的方法. //1声明委托 public deleg ...
随机推荐
- HDU 3844 Mining Your Own Business
首先,如果图本来就是一个点双联通的(即不存在割点),那么从这个图中选出任意两个点就OK了. 如果这个图存在割点,那么我们把割点拿掉后图就会变得支离破碎了.对于那种只和一个割点相连的块,这个块中至少要选 ...
- android 透明度颜色值
100% — FF99% — FC98% — FA97% — F796% — F595% — F294% — F093% — ED92% — EB91% — E890% — E689% — E388% ...
- 通过transform属性改变图片的位置大小等信息
对UIImageView的位置大小方向的改变可以通过改变其transform属性值实现. 位置改变: var transform = CGAffineTransformMakeTranslation( ...
- [Core Javascirpt] Basic Metaprogramming: Dynamic Method
Somehow it looks like reflect in Java. For example: We define an mothod on the Object, it called def ...
- .NET 程序在 Windows XP 下调用 SHA512CryptoServiceProvider 方法报 PlatformNotSupportedException 异常
转自:http://stackoverflow.com/questions/1293905/sha256cryptoserviceprovider-and-related-possible-to-us ...
- android多国语言文件夹文件汇总
android多国语言文件夹文件汇总如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh-rHK 英语(美国):values-e ...
- Rails: No such file or directory - getcwd
这个的意思就是你从一个删除的目录里面运行实例:rails s
- android一键分享功能不使用任何第三方sdk
在android中有自带的一键分享功能,不过它会把所有带分享的应用都找出来,如果我们只需要一些常见的分享应用,该如何做呢? 下面看我的效果图(横屏和竖屏自动适配): 接下来看我的调用(支持图片和文字分 ...
- 配置svn
Linux搭建SVN Server 其中包括添加防火墙规则
- java攻城狮之路(Android篇)--与服务器交互
一.图片查看器和网页源码查看器 在输入地址的是不能输入127.0.0.1 或者是 localhost.ScrollView :可以看成一个滚轴 可以去包裹很多的控件在里面 练习1(图片查看器): pa ...