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);