我正在动态构建查询,但在实现NOT LIKE
个查询时遇到了问题.
我的LIKE
看起来是这样的:
case "LIKE":
{
var memberTypeConverter = TypeDescriptor.GetConverter(member.Type);
var constant = Expression.Constant(value == null ? null : memberTypeConverter.ConvertFrom(value.ToString()!), member.Type);
body = Expression.Call(
typeof(DbFunctionsExtensions),
nameof(DbFunctionsExtensions.Like),
Type.EmptyTypes,
Expression.Property(null, typeof(EF), nameof(EF.Functions)),
member,
constant
);
break;
}
这是可行的,但沿着这条线没有DbFunctionsExtensions.NotLike
或更多的东西,我不确定如何否定Like
.
我试着用了IsFalse
左右的东西,但没有奏效.
body = Expression.IsFalse(Expression.Call(
typeof(DbFunctionsExtensions),
nameof(DbFunctionsExtensions.Like),
Type.EmptyTypes,
Expression.Property(null, typeof(EF), nameof(EF.Functions)),
member,
constant
)`
...
如何获得计算结果为NOT LIKE
查询的表达式?
我怎么能在一张普通的Queryable
上写NOT LIKE
呢?