如何创建LINQ友好型&x27;返回false';使用C#表达式树的表达式?

如何创建LINQ友好型&x27;返回false';使用C#表达式树的表达式?,c#,.net,linq,expression-trees,C#,.net,Linq,Expression Trees,我有一些代码可以根据用户输入动态地建立一些搜索条件,从而生成一个表达式,并传递给LINQ.Where()方法。当输入存在时,它可以正常工作,但当输入不存在时,我想创建一个简单的“returnfalse;”语句,以便不返回任何结果 下面是我当前的尝试,但当将其传递给.Where()方法时,它会抛出NotSupportedException“类型为'Block'的未知LINQ表达式” var参数=表达式.参数(typeof(T),“x”); var falseValue=表达式常数(false);

我有一些代码可以根据用户输入动态地建立一些搜索条件,从而生成一个
表达式
,并传递给LINQ.Where()方法。当输入存在时,它可以正常工作,但当输入不存在时,我想创建一个简单的“returnfalse;”语句,以便不返回任何结果

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

var参数=表达式.参数(typeof(T),“x”);
var falseValue=表达式常数(false);
var returnTarget=Expression.Label(typeof(bool));
var returnFalseExpression=Expression.Block(Expression.Return(returnTarget,falseValue),Expression.Label(returnTarget,falseValue));
var lambdaExpression=Expression.Lambda(returnFalseExpression,参数);
如何构建可由LINQ解释的“return false”表达式?

表达式false predicate=x=>false;
Expression<Func<T, bool>> falsePredicate = x => false;

能否用if-else表达式将整个内容包装起来

意思是:

if input
    return <your normal code>
else
    return false

这是假设
normalSearchExpression
也返回bool。

谢谢,现在答案似乎很明显。我曾尝试过这种方法,但遇到编译器错误“带有语句体的lambda表达式无法转换为表达式树”-我没有意识到我需要做的只是省略大括号。@LeeD仔细阅读错误并尝试理解它的含义通常是值得的。
if input
    return <your normal code>
else
    return false
    Expression.Condition
    (
      Expression.NotEqual(input, Expression.Constant("")), 
      normalSearchExpression, 
      Expression.Constant(false)
    )