VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
  • asp.net教程之Lambda表达式树

Lambda表达式树

Lambda表达式树也是LINQ中最重要的一个概念,Lambda表达式树允许开发人员像处理数据一样对Lambda表达式进行修改。理解Lambda表达式树的概念并不困难,Lambda表达式树就是将Lambda表达式转换成树状结构,在使用Lambda表达式树之前还需要使用System.Linq.Expressions命名空间,示例代码如下所示。
using System.Linq.Expressions;                                                                                                     //使用命名空间
Lambda表达式树的基本形式有两种,这两种形式代码如下所示。
            Func<int, int> func = pra => pra * pra;                                                                    //创建表达式树
            Expression<Func<int, int>> expression = pra => pra * pra;                              //创建表达式树
Lambda表达式树就是将Lambda表达式转换成树状结构,示例代码如下所示。
            Func<int, int> func = (pra => pra * pra);                                                                //创建表达式
            Response.Write(func(8).ToString());                                                                      //执行表达式
            Response.Write("<hr/>");
上述代码直接用Lambda表达式初始化Func委托,运行后返回的结果为64,同样使用Expression类也可以实现相同的效果,示例代码如下所示。
            Expression<Func<int, int>> expression = pra => pra * pra;                               //创建表达式
            Func<int, int> func1 = expression.Compile();                                                                //编译表达式
            Response.Write(func1(8).ToString());
上述代码运行后同样返回64,运行后如图20-10所示。使用Func类和Expression类创建Lambda表达式运行结果基本相同,但是Func方法和Expression方法是有区别的,如Lambda表达式pra => pra * pra,Expression首先会分析该表达式并将表达式转换成树状结构,如图20-11所示。
   
图20-10  Lambda表达式树             图20-11  Lambda表达式树格式
当编译器编译Lambda表达式时,如果Lambda表达式使用的是Func方法,则编译器会将Lambda表达式直接编译成匿名方法,而如果Lambda表达式使用的是Expression方法,则编译器会将Lambda表达式进行分析、处理然后得到一种数据结构。

相关教程