2

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

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

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

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

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

谢谢您的帮助!

4

3 回答 3

3

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

看看 LinqExpression类 - 它可能会有所帮助。

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

于 2010-12-05T16:45:06.963 回答
2

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

于 2010-12-05T16:44:06.090 回答
0

动态 Linq是您正在寻找的

于 2010-12-05T16:47:07.210 回答