Expression表达式目录树
表达式目录树,在c#中是Expression来定义的,它是一种语法树,或者说是一种数据结构。
其主要用于存储需要计算、运算的一种结构,它只提供存储功能,不进行运算。
Expression的方法体只能是一个整体,不能具有花括号。
1 | Func<int, int, int> func = (m, n) => m * n + 2; // new Func<int, int, int>((m, n) => m * n + 2); |
Lambda表达式是一种方法,Expression表达式目录树是一种数据结构(可以通过二叉树形式解析)
ORM框架,深入探索… …
1、用Lambda表达式快速声明Expression表达式目录树
1 | Expression<Func<int, int, int>> exp = (m, n) => m * n + 2; |
2、自主构建Expression表达式目录树
案例01
1 | ParameterExpression parameterExpression = Expression.Parameter(typeof(int), "m"); //定义参数“m” |
1 | int iResult1 = exp.Compile().Invoke(11, 12); |
案例02
1 | ParameterExpression parameterLeft = Expression.Parameter(typeof(int), "m");//定义参数 |
案例03
1 | ConstantExpression conLeft = Expression.Constant(345); |
练习一:
1、利用Lambda表达式快速声明Expression表达式目录树
1 | Expression<Func<People, bool>> lambda = x => x.Id.ToString().Equals("5"); |
2、自主构建Expression表达式目录树(反编译或工具获得的)
1 | ParameterExpression parameterExpression = Expression.Parameter(typeof(People), "x"); // 声明参数表达式x,声明一个参数对象 |
1 | expression.Compile().Invoke(new People() //需要 传入People类型 |
ORM框架和EF
- 本文作者: 梁俊可
- 本文链接: http://ljk3d.com/2021/10/19/cSharpNote/CSharp高级进阶教程_07_表达式目录树/
- 版权声明: 梁俊可工作室