创建表达式>谓词只有LambaExpression和比较值
本文关键字:LambaExpression 比较 谓词 Func boolean 创建 表达式 | 更新日期: 2023-09-27 18:18:28
我需要创建一个Expression<Func<T, bool>>
,但我所拥有的只是一个LambaExpression
的属性进行比较和用于比较的值。
如果我硬编码它,这就是谓词的样子,这是我需要实现的,但不知道如何实现。
string comparisonValue = "something";
Expression<Func<Person, bool>> predicate = person => person.Name == comparisonValue;
我有以下内容:
LambdaExpression expression = PropertyExpression<Person>(t => t.Name);
是否有一种方法来生成硬编码谓词像上面只是一个属性LambdaExpression和值比较?
我试过使用LambdaExpression.Equal()
,但不能让它工作。
可以这样实现。
Expression<Func<TSource, bool>> EqualToExpression<TSource, TValue>(
Expression<Func<TSource, TValue>> selectValue, TValue targetValue)
{
return Expression.Lambda<Func<TSource, bool>>(
Expression.Equal(
selectValue.Body,
Expression.Constant(targetValue)),
selectValue.Parameters);
}
按如下方式使用
Expression<Func<Person, string>> selectName = p => p.Name;
Expression<Func<Person, bool>> compareName = EqualToExpression(selectName, "John");