0
我想要一個在運行時動態編譯的Linq表達式有條件的Linq表達式樹
我有一個值,如果比值大於例如5000和另一個值> 70,那麼它應該返回一個常量X 其他 值大於說5000和另一個值< 70它返回y 如何創建一個表達式樹 一個> 5000 & b < 70天,然後 其他 a> 5000 & b> 70然後e
我想要一個在運行時動態編譯的Linq表達式有條件的Linq表達式樹
我有一個值,如果比值大於例如5000和另一個值> 70,那麼它應該返回一個常量X 其他 值大於說5000和另一個值< 70它返回y 如何創建一個表達式樹 一個> 5000 & b < 70天,然後 其他 a> 5000 & b> 70然後e
您可以對三元運算符(?:)使用lambda表達式。
var d = 1;
var e = 2;
var f = 3;
Expression<Func<int,int,int>> expression =
(a, b) => (a > 5000 && b < 70) ? d :
(a > 5000 && b > 70) ? e :
f; // If b == 70
var func = expression.Compile();
var val = func(5432, 1);
我們是否可以進一步將a> 5000 && b <70轉換成更多的表達式?如果是這樣? – chugh97 2009-08-07 14:08:17
你是什麼意思?整個lambda將在編譯時轉換爲表達式樹 - 在Reflector中打開以查看它產生的內容。 – dahlbyk 2009-08-07 15:35:53