C# 即使添加了显式false语句,PredicateBuilder仍然为true

C# 即使添加了显式false语句,PredicateBuilder仍然为true,c#,.net,expression-trees,predicatebuilder,C#,.net,Expression Trees,Predicatebuilder,我有以下声明 var search = PredicateBuilder.True<SomeType>(); search.And(f => false); // Still the "search" variable value is: {f => true}. 起初,我在尝试一种表达方式;没有成功,所以我尝试了这个错误。不管我做了什么,都是一样的。发生了什么?PredicateBuilder方法不会改变它们不能改变的表达式,因为表达式树是不可变的-您需要使用返回值

我有以下声明

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

// Still the "search" variable value is: {f => true}.
起初,我在尝试一种表达方式;没有成功,所以我尝试了这个错误。不管我做了什么,都是一样的。发生了什么?

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

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