lambda表达式和查询表达式
(1)Lambda表达式定义:
Lambda是创建匿名函数的另一种形式。它比对应的匿名方法更加的简化。因此,所有的情况都推荐使用Lambda表达式。
它可以包括表达式和语句,并且用于创建委托和事件。
Lambda表达式由输入参数,Lambda运算符和表达式构成。它的语法如下:(wdd)=>wdds wdd 表示输入的参数。
=>为运算符,wdds为表达式或者语句模块。
例1.下面创建一个Lambda表达式:m=>m*m; 分析:输入参数m的值,然后计算出m的平方,并返回计算的结果。
例2:创建一个Lambda表达式,并获取该值:int n=(int m)=>m*m; 分析:输入参数m,计算出m的平方,并把返回计算的结果赋值给n;
参考代码为:
Class Program
{
delegate int delA(int m);
static void Main(string[] args)
{
delA n= (m) => { return m*m; };
Console.WriteLine(e(2,3));
Console.ReadKey();
}
}
例3:创建一个Lambda表达式,并获取该值:int n=(int m,int y)=>m*y; 分析:输入参数m,y,计算出m和y的乘积,并把返回计算的结果赋值给n;
参考代码为:
Class Program
{
delegate int delA(int m,int y);
static void Main(string[] args)
{
delA n= (m,y) => { return m*y; };
Console.WriteLine(e(2,3));
Console.ReadKey();
}
}
多个Lambda表达式可以构成Lambda语句块,语句块可以放在运算符的右边,作为Lambda的主体,根据主体不同,
Lambda表达式可以分为:表达式Lambda和语句Lambda。语句模块中可以包含多条语句,并且可以包括循环,方法
调用和if语句等。
如果Lambda运算符右边是一个语句块,则必须要有{和}包围语句块。
(2)Lambda查询表达式
查询表达式是一种查询语法表示的表达式,它用于查询和转换来自任意支持LINQ的数据源中的数据。查询表达式使用许多常见的
C#语言构造,易读简洁,容易掌握。它由一组类似于SQL或者XQuery的声明型语法编写的字句组成,每一个字句可以包含一个或
者多个C#表达式。这些表达式本身也可以是查询表达式,或者包含表达式。
- 查询表达式必须以from字句开头,以select或group 字句结束。
- from字句:指定查询操作的数据源和范围变量。
- select字句:指定查询结果的类型和表现形式。
- where字句:指定筛选元素的逻辑条件。
- let字句:引入用来保存查询表达式中字句查询结果的范围变量
- order by:对查询字句进行排序操作 ,包括升序和降序。
- group :对查询结果进行分组。
- into字句:提供一个临时标识符,join字句,group字句或者select字句可以通过该标识符引用查询操作中的中间结果。
- join字句:用来连接多个查询操作的数据源。