您当然可以从中创建System.Linq.Expressions
,但由于您指定的格式不是必须以“本机”表达式格式,并且您提到您在外部库中引用了方法,所以更简单的方法可能是使用Roslyn并生成/在运行中运行该代码(有关详细信息,请参阅http://source.roslyn.codeplex.com/#Microsoft.CodeAnalysis.CSharp/Compilation/CSharpCompilation.cs或者搜索SO)。这种方法的优点是,您可以使用大部分表达式,而无需转换它们。
using static System.Math;
var a = 2; // taken from db dataentry table
var c = 7; // taken from db dataentry table
// statement taken from db expression table
// Sqrt(a)*c
var result = Sqrt(a)*c;
这里的好处是,您的表达式不会绑定到C#语言(即使您编译它们的主代码是C#)。
如果你仍然要创建LINQ表达式,你可以通过创建你这样的表情这样做:
using static System.Math;
var a = 2; // taken from db dataentry table
var c = 7; // taken from db dataentry table
// statement taken from db expression table
// Sqrt(a)*c
Expression<Func<double, double, double>> expression = (a, c) => Sqrt(a)*c;
var result = expression.Compile().Invoke(a, c);
注意:如果你有更简单的语句,而前者,你可以评估更多的后者只能复杂的逻辑与分支等
如果这不是你真正想知道的,你可以请重新表述您的问题,并提供更多的细节?
你必须给我们的东西,你已经尝试过?你有一个应用程序层(例如Java)吗?这将是一个更合适的地方进行这种评估?你有什么样的DLL? CLR程序集或其他东西? – Alexei
实际上它š转换为DLL,这样的函数库,其中将参数传递给功能,并返回结果的VBA。 –
您是否有一个从MySql使用数据的前端应用程序? – Alexei