如何动态创建表达式> 谓词?
我将如何使用表达式树动态创建一个看起来像这样的谓词...
(p.Length== 5) && (p.SomeOtherProperty == "hello")
以便我可以将谓词粘贴到 lambda 表达式中,就像这样...
q.Where(myDynamicExpression)...
我只需要指向正确的方向。
更新:抱歉,各位,我遗漏了一个事实,即我希望谓词具有如上所述的多个条件。 对困惑感到抱歉。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
原始
就像这样:
更新
重新
(p.Length== 5) && (p.SomeOtherProperty ==“你好”)
:Original
Like so:
Updated
re
(p.Length== 5) && (p.SomeOtherProperty == "hello")
:使用谓词构建器。
http://www.albahari.com/nutshell/predicatebuilder.aspx
这非常简单!
Use the predicate builder.
http://www.albahari.com/nutshell/predicatebuilder.aspx
Its pretty easy!
要使用
&&
运算符组合多个谓词,您可以一次将两个谓词连接在一起。因此,如果您有一个名为
predicates
的 Expression 对象列表,请执行以下操作:To combine several predicates with the
&&
operator, you join them together two at a time.So if you have a list of Expression objects called
predicates
, do this:将 Lambda 表达式相互关联:
另一种方法是使用以下代码。 它比我的建议中的 Schotime 答案更灵活,并且工作完美。 无需外部掘金
框架 4.0
To associate Lambda expression each other:
An other way is to use the following code. It s more flexible than the Schotime answer in my advice and work perfectly. No external Nuggets needed
Framework 4.0
我有一个名为 Exprelsior 的开源项目,它提供了非常简单的方法创建动态谓词:
根据您的示例:
它甚至支持全文谓词生成,因此您可以从 HTTP GET 方法接收任何动态查询,例如:
它支持更多的数据类型和运算符。
链接:https://github.com/alexmurari/Exprelsior
I have a open-source project called Exprelsior that provides very simple ways to create dynamic predicates:
Based on your example:
It even supports full text predicate generation, so you can receive any dynamic query from an HTTP GET method, for example:
It supports a lot more data types and operators.
Link: https://github.com/alexmurari/Exprelsior