2012-06-22 3 views
0

다음 진술이 있습니다.명시 적 false 문을 추가 한 후에도 PredicateBuilder가 계속 true

var search = PredicateBuilder.True<SomeType>(); 
search.And(f => false); 

// Still the "search" variable value is: {f => true}. 

처음에는 표현을 시도했습니다. 아무것도 성공하지 못했기 때문에이 "거짓"을 대신 시도했습니다. 내가 한 일과 상관없이 여전히 동일합니다. 무슨 일 이니?

답변

11

(표현식 나무는 불변으로 그들이 할 수 없었다) 발현 변이하지 않는 PredicateBuilder 방법 - 당신이 반환 값을 사용할 필요가 :

var search = PredicateBuilder.True<SomeType>(); 
search = search.And(f => false);