您當然可以從中創建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