即使添加了明确的false语句,PredicateBuilder仍然是正确的

Sta*_*tar 0 .net c# expression-trees predicatebuilder

我有以下声明.

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

// Still the "search" variable value is: {f => true}.
Run Code Online (Sandbox Code Playgroud)

起初,我正在尝试表达; 没有成功,所以我尝试了这个"假".不管我做了什么,它仍然是一样的.怎么了?

Jon*_*eet 11

PredicateBuilder 方法不会改变表达式(它们不能,因为表达式树是不可变的) - 你需要使用返回值:

var search = PredicateBuilder.True<SomeType>();
search = search.And(f => false);
Run Code Online (Sandbox Code Playgroud)