如何使用C#表达式树创建LINQ友好的“return false”表达式?

我有一些代码可以根据用户输入动态建立一些搜索条件,从而产生一个表达式< Func< T,bool>>传递给LINQ .Where()方法.当输入存在时它工作正常,但是当输入不存在时,我想创建一个简单的’return false;’声明,以便不返回任何结果.

下面是我当前的尝试,但是当它传递给.Where()方法时,它会抛出一个NotSupportedException“类型为’Block’的未知LINQ表达式.”

var parameter = Expression.Parameter(typeof(T), "x");
var falseValue = Expression.Constant(false);
var returnTarget = Expression.Label(typeof (bool));

var returnFalseExpression = Expression.Block(Expression.Return(returnTarget, falseValue), Expression.Label(returnTarget, falseValue));
var lambdaExpression = Expression.Lambda<Func<T, bool>>(returnFalseExpression, parameter);

如何构建一个可以由LINQ解释的’return false’表达式?

最佳答案
Expression<Func<T, bool>> falsePredicate = x => false;

转载注明原文:如何使用C#表达式树创建LINQ友好的“return false”表达式? - 代码日志