如何实现Expression树转化为SQL与语句
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍"如何实现Expression树转化为SQL与语句",在日常操作中,相信很多人在如何实现Expression树转化为SQL与语句问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2025年01月22日如何实现Expression树转化为SQL与语句
这篇文章主要介绍"如何实现Expression树转化为SQL与语句",在日常操作中,相信很多人在如何实现Expression树转化为SQL与语句问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何实现Expression树转化为SQL与语句"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在用Expression解析的的时候碰到一些参数(不是具体的值),会出现这种情况。
在这里我们希望得到的是id=10,而不是id=m_id;那如何来解析这些参数?
====================================================================================================\
首先参数分为2中,一种是n.id,这种可以说是一种形参,没有具体的数据只是泛型中的一个属性,这种应该被解析成字符串id,另外一种是m_id,这种是有具体的值得,我们希望它解析成具体的值(10)而不是m_id。在Expression的子类中的MemberExpression类接收。我们来看看MemberExpression的信息
1 public class StudentHelper2 {3 public int id1 { get; set; } //属性4 public int id2; //字段5 public static int id3 { get { return 10; } } //静态属性6 public static int id4 = 20; //静态字段7 8 }
一个数据类
1 public static void Main(string[] args) 2 { 3 StudentHelper h = new StudentHelper(); 4 h.id1 = 1; 5 h.id2 = 2; 6 Expression> la1 = n=> n.id == h.id1; 7 Expression > la2 = n=> n.id == h.id2; 8 Expression > la3 = n=> n.id == StudentHelper.id3; 9 Expression > la4 = n=> n.id == StudentHelper.id4;10 Expression > la5 = n=> n.id == n.new_id;11 test(la1,"属性");12 test(la2, "字段");13 test(la3, "静态属性");14 test(la4, "静态字段");15 test(la5, "自身参数");16 Console.ReadLine();17 }18 public static void test(Expression > la,string name)19 {20 Console.WriteLine("\n\n*****************"+name+"*********************");21 BinaryExpression B_exp = la.Body as BinaryExpression;22 Console.WriteLine("Expression类名:"+B_exp.Right.GetType().Name);23 MemberExpression m_exp = B_exp.Right as MemberExpression;24 string valueClassName = string.Empty;25 if (m_exp.Expression == null)26 {27 Console.WriteLine("数据为空");28 }29 else30 {31 valueClassName = m_exp.Expression.GetType().Name;32 Console.WriteLine("数据Expression类名:">调试结果:通过调试结果可以看到自身的参数其数据对象为类型TypedParameterExpression,不是有2中可能静态的字段和属性其数据对象为空,有则为FieldExpression类型。判断完后就可以把表达式当成委托编译出来。具体代码如下:1 public static object Eval(MemberExpression member)2 {3 UnaryExpression cast = Expression.Convert(member, typeof(object));4 object obj = Expression.Lambda >(cast).Compile().Invoke();5 return obj;6 } 最后把代码嵌入进入:调试结果为
到此,关于"如何实现Expression树转化为SQL与语句"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
属性
数据
参数
字段
静态
语句
学习
结果
代码
对象
更多
类名
类型
帮助
实用
接下来
信息
只是
子类
字符
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库备份与恢复的常用方法
2020数据库考试题及答案下午
江苏海航软件开发销售
阿里云读写分离数据库
网络安全检查总结的报告
关闭数据库自动解锁
软件开发自学考什么证书
服务器如何把物品换成金币
时光验证的数据库
自己开发数据库
插件管理器没有服务器
厦门 网络安全
米哈游服务器防护
王者不同服务器的账号
綦江区工商软件开发流程特点
网络技术讲师 招聘
坤翔互联网科技
关于网络安全班会的目的
软件设置保存到数据库
北京美仑佳艺网络技术
网络安全教育知识幼儿
深圳同城软件开发
达梦数据库修改密码命令
安全网线服务器书
网络安全进校园主题图片
网络安全统一鉴别实验报告
民生山西服务器故障
北京推广网络技术一体化
软件开发前的 设计工作
网络安全售后服务费占比