2009-08-07 16 views
0

実行時に動的にコンパイルされるLinq式が必要です条件付きLinq式ツリー

私は、 5000と別の値> 70それは5000を言うよりも 大きな値に一定のx他 と別の値を返す必要があります< 70それは私が式ツリーを作成するにはどうすればよいのy を返し > 5000 & B < 70その後、他の 日間a> 5000 & b> 70 then e

答えて

3

三項演算子(?:)でラムダ式を使用できます。

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); 
+0

我々はfuther式にA> 5000 && bの<70を破るfutherすることはできますか?もしそうならば? – chugh97

+0

どういう意味ですか?ラムダ全体がコンパイル時に式ツリーに変換されます。リフレクターで生成されたものを正確に表示します。 – dahlbyk