LinQ——lambda表达式欲知

在学习LinQ的过程中,最主要的一个阶段就是对于lambda的熟悉使用

1)Lambda介绍

lambda本质上是一个委托,他是匿名委托(匿名函数),其本身是从函数式编程语言中发展而来的。多有的Lambda表达式使用Lambda运算符=>;其左侧是输入的参数,右侧是表达式或者语句块,也就是赋值的意思。Lambda一般和委托合作出现,将表达式直接分配给委托类型,举例如下。

2)举例说明

首先我们需要定义一个委托:

 //定义一个委托
        public delegate string deleTransfer(string s);   //注意方法签名

然后直接委托指向方法,执行就好。再次我们尝试了三种方法,当然第三种是最常用也是我们需要学习的:

在方法1中需要调用的方法:

 //将字符串的小写字母转换成大写字母的方法
        public string ToPascal(string s)
        {
            return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
        }
 private void BtnLambda_Click(object sender, EventArgs e)
        {
            //Lambda来源‘

            //.net Framwork1.0   委托-函数指针
            //deleTransfer trans = new deleTransfer(ToPascal);   //委托指向方法ToPascal
            //Console.WriteLine(trans("abcdTFDF"));           //最后输出的结果是按照方法ToPascal来执行的

            //.net Framwork2.0  匿名方法
            //deleTransfer trans = delegate(string s) { return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower(); };
            //Console.WriteLine(trans("abcdTFDF"));             //最后输出的结果是按照方法ToPascal来执行的

            //.net Framwork3.5  Lambda表示方法
            deleTransfer trans = s => s.Substring(0, 1).ToUpper() + s.Substring(1,5).ToUpper();
            Console.WriteLine(trans("aBCdTfdf"));             //最后输出的结果是按照方法ToPascal来执行的
        }

在其中,我们传入了这样的一个方法,SubString,这是截取需要显示的字符串然后再根据要求显示出来,如上,最后一个方法中,我让其从0开始,指定长度为1,大写显示,从1开始,指定长度为5,小写字母显示,最终输出结果:

在上述代码中,对于trans的传值则是使用了lambda表达式,再此简单的举一个小例子,也只是明白其模样和使用。方便LinQ的使用。

时间: 2024-11-23 14:13:22

LinQ——lambda表达式欲知的相关文章

LinQ Lambda表达式用作泛型活动

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.IO; namespace LambdaExpressionAction { class Program { static void Main(string[] args) { //Action:泛型委托,可以将行为捕获为一个可调用的对象 //只需要

在Linq to sql 和 Entity framework 中使用lambda表达式实现left join

我们知道lambda表达式在Linq to sql 和 Entity framework 中使用join函数可以实现inner join,那么怎么才能在lambda表达式中实现left join呢?秘诀就是在join后面加上一个函数DefaultIfEmpty函数,实际上这个函数在linq中貌似也只有将inner join转换为left join的作用,示例如下 var joinResult = DB.Table1s.Join(DB.Table2s, a => a.id, b => b.id,

ASP.NET EF(LINQ/Lambda查询)

EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET ASP.NET MVC 项目会自动导入MVC程序集,因为默认.NET环境(GAC)中没有这个程序集 1 create database MyFirstEF 2 on primary 3 ( 4 name='MyFirstEF.mdf', 5 --修改为自己电脑上SQL DB路径 6 filename='E:\ProgramMSSQL

lambda表达式拼接

linq lambda表达式拼接 public static class PredicateBuilder { public static Expression<Func<T, bool>> True<T>() { return f => true; } public static Expression<Func<T, bool>> False<T>() { return f => false; } public stat

【2017-06-01】Linq基础+Lambda表达式实现对数据库的增删改查

一.Linq to sql 类 高集成化的数据库访问技术 使用Linq可以代替之前的Ado.Net.省去了自己敲代码的实体类和数据访问类的大量工作. 实体类: 添加一个Linq to sql 类 ----选择要使用的数据库---- 拖入要使用的表  就相当于实体类建完了. 如果进行属性扩展,在App_Code下添加类,类名同表名一致.将该类在访问修饰符后加上partial,将该类定为实体类的一部分 数据访问类: 不用在App_Code下再建数据访问类了. 直接在使用数据访问类的地方用数据库上下文

entity framework 新手入门篇(1.5)-lambda表达式与linq

在建立好了EF模型之后,先不着急使用它,在使用它之前,你还需要了解两个相关的技术,lambda表达式与linq. 作为微软C#语言中重要的语法糖-lambda表达式与LINQ,本质都是一个方法,以lambda表达式为例: x=>x+1;就是一个完整的lambda表达式. 其等同于一个匿名的方法: int anonymous(int x) { return x+1; } 考虑一下这个方法中最重要的部分,也就两个部分:传入的参数,返回的参数. 返回值类型,参数类型都是可以进行推断的,就像C#中的VA

SQL、LINQ和Lambda表达式

首先说说这三者完全是三种不同的东西,SQL是结构化查询语言(Structured Query Language)简称,这大家再熟悉不过了,下面主要介绍LINQ和Lambda表达式的基本概念以及同一查询这三者的不同实现. 简单介绍 LINQ(Language Integrate Query)是语言集成查询他在对象和数据之间建立一种对应的关系,可以使用访问内存对象的方式查询数据集合.LINQ查询是C#中的一种语言构造.因此开发人员可以再C#代码汇总嵌套类似于SQL语句的查询表达式,从而实现数据查询的

2017-6-1 Linq表达式 Lambda 表达式

1.Linq:Linq to sql 类    高度集成化的数据库访问技术 使用Linq是应该注意的问题: 1.创建Linq连接后生成的dbml文件不要变动,生成的表不要碰,拖动表也会造成数据库连接发生变动,需要重新保存. 2.属性拓展的使用:添加一个新的类,不要在dbml中添加属性拓展,一旦数据库变动,属性拓展类就会失效. 3.使用Linq获取的数据都是?int,?string等?数据类型,意思是也有可能为空,这时候操作数据需要先把数据类型转化成int,string等数据类型. 2.实体类:

C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re