2009-08-07 5 views
0

런타임에 동적으로 컴파일되는 Linq 표현식을 원합니다.조건부 Linq 표현식 트리

저는 값이 있고 값이 예를 들어보다 큰 경우. 5000 다른 값> (70) 다음은 5000 말보다 큰 값 상수 X 다른 다른 값을 반환해야합니다 < 70 그것이 내가 표현 트리를 만들려면 어떻게해야합니까 Y 을 반환 A> 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

a> 5000 && b <70을 더 자세히 표현할 수 있습니까? 그렇다면 어떻게? – chugh97

+0

당신은 어떻게 그걸 의미합니까? 전체 람다는 컴파일 타임에 표현 트리로 변환됩니다. 리플 렉터에서 생성 된 내용을 정확히 볼 수 있습니다. – dahlbyk

관련 문제