我正在开发一个项目,我需要在VB.NET中评估一些公式。我一直在使用MS Script Control来评估一些简单的逻辑/数学公式。
但是,我现在面临的处理字符串表达式,将程序中的变量设置为某些值。所以,例如,假设我有以下内容:
Dim netPrice As Decimal
Dim expressionFormula As String = "netPrice = 0"
我需要能够评估“expressionFormula”并将netPrice变量设置为0.我一直在尝试MS脚本控件中的.AddObject方法的不同组合,但还没有任何工作。
我应该提到这个例子仅用于说明目的,真实场景涉及来自类型化DataSet的几个DataTable对象。最后,我的DataTable中的某些字段可能需要根据这些动态表达式设置为特定的常量值。
感谢您的帮助!
答案 0 :(得分:3)
对于这种功能,您需要编写自己的解析器和评估器。
看看Linq Expression
课程 - 它可能会有所帮助。
或者,根据您的方法,您可以使用CSharpCodeProvider
编写和编译动态类,以将表达式编译为C#类/程序集。
答案 1 :(得分:2)
如果你必须处理复杂的表达式,那么这个库可能会有所帮助:http://flee.codeplex.com/?
答案 2 :(得分:0)
Dynamic Linq正是您要找的