Expression<Func<string, bool>>
두 개의 표현식 트리가 있는데 두 표현식의 OR을 수행하는 단일 표현식을 얻고 싶습니다. 두 표현식에 동일한 문자열 매개 변수를 전달하십시오. 어떤 생각?두 표현식 트리를 결합하는 방법
1
A
답변
1
Expression.Lambda
표현식에서 결합한 다음 Expression.Or
을 사용하여 그 중 하나가 사실인지 확인할 수 있습니다.
Expression<Func<Car, bool>> theCarIsRed = c1 => c1.Color == "Red";
Expression<Func<Car, bool>> theCarIsCheap = c2 => c2.Price < 10.0;
Expression<Func<Car, bool>> theCarIsRedOrCheap = Expression.Lambda<Func<Car, bool>>(
Expression.Or(theCarIsRed.Body, theCarIsCheap.Body), theCarIsRed.Parameters.Single());
var query = carQuery.Where(theCarIsRedOrCheap);
은 어쩌면 당신은 당신이 할
PredicateBuilder
from LINQKit를 사용할 수있는 추가 정보를 원하시면에게
here
+1
'theCarIsCheap'의 본문에 사용 된 매개 변수가 결과 표현식에 더 이상 존재하지 않으므로 작동하지 않습니다. ExpressionVisitor에서 먼 길을 사용해야합니다. –
+0
나는 그것을 조사하고있다. 그러나 링크는 가치가있다. – Dave
3
를 얻을 수 있습니다 : 여기
은 예입니다. 예 :Expression<Func<string, bool>> e1 = …;
Expression<Func<string, bool>> e2 = …;
Expression<Func<string, bool>> combined = e1.Or(e2).Expand();
내가 여기 묻는 것이 무엇인지 잘 모르겠다. – Bostwick