2010-12-05 32 views
2

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

但是,我现在正面临处理字符串表达式,它将我的程序中的变量设置为某些值。因此,举例来说,假设我有以下几点:

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

我需要能够评估“expressionFormula”和netPrice变量设置为0。我一直在努力的.AddObject的不同组合方法在MS脚本控制,但没有任何工作。

我应该提到这个例子只是为了说明的目的,真正的场景涉及来自类型化数据集的多个DataTable对象。最后,根据这些动态表达式,可能需要将DataTable中的某些字段设置为特定的常量值。

感谢您的帮助!

+0

为什么你在C#中标记了这个问题?我没有看到任何C#的提及... – 2010-12-05 16:42:09

+0

@Mark:你说得对。我有点认为它最初是VB/C#独立,但现在我不太确定。我将删除C#标记。 – Overhed 2010-12-05 18:35:50

回答

3

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

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

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

+0

感谢您的回答。我最终采取了一种更严格的方法来编写公式(允许我解析它们),并利用DataSet/DataTable语法在设置值时动态地“插入”字段和表名称。 – Overhed 2010-12-08 21:09:35

2

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

+0

感谢您的链接,它不会做我所需要的,但它看起来像它可能是我正在使用的过时的MS脚本控制的一个很好的替代品。 – Overhed 2010-12-08 21:10:08