当前位置: 首页 > 编程语言 > C#

如何创建表达式树来执行类似于SQL“Like”命令的操作分享

时间:2023-04-10 21:29:01 C#

如何创建表达式树来执行类似于SQL“Like”命令的操作我正在研究一些表达式同事树代码写的,正在研究加入其他表达式的可能性。它目前支持:equals、not-equals、IsNull等。我需要添加一些允许它使用类似于SQL“Like”命令或使用正则表达式的通配符比较的东西。目前,该代码解析XML文件并提取数据,然后使用类似于下面所示的代码对其进行处理。这是表达“等于”的一个例子。“callExp”是一个MemberExpression,它基本上包含我的表(实体)的字段名称,而GetConstantExpression获取我正在比较的数据的详细信息。xRet=Expression.MakeBinary(ExpressionType.Equal,callExp,GetConstantExpression(element.Element("Value"),callExp.Type));我所追求的是一种创建类似于“喜欢”命令的“表达式”的方法。这可以使用类似于上面的几行来完成,还是会更复杂?在这方面有什么好的资源可以提供帮助吗?====================================================================================基于反馈的新代码:我正在看一些例子并尝试下面我希望可以创建一个表达式。它给了我如下所示的错误。我是否朝着正确的方向创建“StartsWith”表达式?_entityExp是对MyClass的ParameterExpression引用。ParameterExpressionp=Expression.Parameter(_entityExp.Type,"entity");MethodInfo方法=typeof(string).GetMethod("StartsWith",new[]{typeof(string)});varcontainsMethodExp=Expression.Call(p,method,Expression.Constant("root"),p);在类型“System.String”上声明的方法“BooleanStartsWith(System.String)”不能用类型“MyClass”的实例调用表达式树只能表示具有与.NET语言相同功能的表达式-方法调用、属性评估等。您通常最接近“喜欢”的是调用string.StartsWith、string.EndsWith或string.Contains。如果你想处理正则表达式,你可能想使用Regex.IsMatch。无论哪种方式,这都是封装在方法中的东西,而不是封装在表达树本身的“语言”中的东西。如果不了解表达式树的使用方式,就很难准确地说出您应该做什么。您可以创建自己的“Like”方法,消费者会注意到并正确处理它,例如……或者您可以使用现有的字符串/正则表达式方法。使用Contains、startswith或endwith等。以上是C#学习教程:如何创建表达式树来执行类似于SQL“Like”命令的操作。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: