ユーザー入力に基づいていくつかの検索条件を動的に構築するコードがいくつかあり、その結果Expression<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' 式を作成するにはどうすればよいですか?