C# 表达式树 创建、生成、使用、lambda转成表达式树~表达式树的知识详解
笔者最近学了表达式树这一部分内容,为了加深理解,写文章巩固知识,如有错误,请评论指出~
Expression<Func<int, int, int, int, int>> func = (a, b, c, d) => { if (a < 10) { a += 1; } /* * 其它操作代码 */ return a + b + c + d; };View Code
把那些东西通通删除,修改后:
Expression<Func<int, int, int, int, int>> func = (a, b, c, d) => a + b + c + d;
这样的 “最简” 的 lambda表达式 才能被系统自动转为表达式树
2,运算操作符
一般数学上,有加减乘除、取余、求幂等操作,而在程序中,运算操作符可以有更多的选择,达 85 种。
笔者这里给出一张图列出部分方法。
微软官方 的操作运算符列表 https://docs.microsoft.com/zh-cn/dotnet/api/system.linq.expressions.expression?view=netframework-4.7.2
估计大家看微软的文档会有点不爽~这里推荐大神翻译、整理的列表 https://blog.csdn.net/zhuqinfeng/article/details/70168337
3,Expression 参数
以数学 椭圆周长公式:L = 2πb + 4(a-b) ,a 为长半轴,b 为短半轴, 进行举例
Parameter 类似于 数学的 未知数 如 a 、 b;使用方法
ParameterExpression a = Expression.Parameter(typeof(int), "a")
ParameterExpression b = Expression.Parameter(typeof(int), "b")
Constant 表示一个常数,例如 2πb 中的 2 或者 2π ;使用方法
ConstantExpression define = Expression.Constant(2);
其它更多参数分类 请查看 https://blog.csdn.net/zhuqinfeng/article/details/70168337
这里附上部分截取图片
4,Expression 的操作方法
表示加减乘除等运算的方法。以下图举例
Multiply(a,b) 为乘法,Add(r1,r2) 为加法。
当然,并没有这么简单,他们都有相关的重载方法和高级的使用用途。
请查看 https://blog.csdn.net/zhuqinfeng/article/details/70168337
这里给出部分截图
5,表达式树的高级用法
表达式树可以结合 数据库查询 或 Linq,衍生很多高级操作。
例如 动态查询、遍历表达式树、转成成 SQL where 子句等等,限于幅度,笔者不再赘述。
下面的链接可以查看 System.Linq.Expressions 的所有类型对象。https://docs.microsoft.com/zh-cn/dotnet/api/System.Linq.Expressions?view=netframework-4.7.2
好好学习,天天向上~期望 3号面试成功
- 详解如何使用C#.NET进行注册表项和键值的创建、删除、修改、获取等操作
- C#中如何创建、生成以及使用DLL
- 【原创】PB调用SAP的Web Service结构体数组参数方法详解(使用C#调用Web Service生成dll)
- C#使用Linq To XML读取XML,Linq生成XML,Linq创建带属性或带节点XML
- 使用c#在word文档中创建表格的方法详解
- 如何使用C#代码创建快捷方式文件详解
- ASP.NET Core中如何使用表达式树创建URL详解
- 详解C#使用C++生成的DLL
- c#3.0新特性使用lambda表达式创建表达式树
- C# Lambda表达式详解,及Lambda表达式树的创建
- C# Lambda表达式详解,及Lambda表达式树的创建
- C# Lambda表达式详解,及Lambda表达式树的创建
- C# Lambda表达式详解,及Lambda表达式树的创建
- PB调用SAP的Web Service结构体数组参数方法详解(使用C#调用Web Service生成dll)
- C#重点知识详解(一)
- C#重点知识详解(二) 选择自 masterall 的 Blog
- C#重点知识详解(一) 选择自 masterall 的 Blog
- C#重点知识详解(一)
- C#重点知识详解(二)
- C#重点知识详解(三)