在.NET中评估动态字​​符串公式?

时间:2010-12-05 16:39:39

标签: .net vb.net formula scriptcontrol

我正在开发一个项目,我需要在VB.NET中评估一些公式。我一直在使用MS Script Control来评估一些简单的逻辑/数学公式。

但是,我现在面临的处理字符串表达式,将程序中的变量设置为某些值。所以,例如,假设我有以下内容:

Dim netPrice As Decimal
Dim expressionFormula As String = "netPrice = 0"

我需要能够评估“expressionFormula”并将netPrice变量设置为0.我一直在尝试MS脚本控件中的.AddObject方法的不同组合,但还没有任何工作。

我应该提到这个例子仅用于说明目的,真实场景涉及来自类型化DataSet的几个DataTable对象。最后,我的DataTable中的某些字段可能需要根据这些动态表达式设置为特定的常量值。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

对于这种功能,您需要编写自己的解析器和评估器。

看看Linq Expression课程 - 它可能会有所帮助。

或者,根据您的方法,您可以使用CSharpCodeProvider编写和编译动态类,以将表达式编译为C#类/程序集。

答案 1 :(得分:2)

如果你必须处理复杂的表达式,那么这个库可能会有所帮助:http://flee.codeplex.com/

答案 2 :(得分:0)

Dynamic Linq正是您要找的