You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core表达式树中如何实现NOT LIKE查询?

如何在EF中动态构建NOT LIKE表达式?

动态表达式构建方案

你可以通过Expression.Not方法对DbFunctionsExtensions.Like的结果取反,实现等价于NOT LIKE的逻辑,无需使用IsFalse。修改后的代码如下:

case "NOT LIKE":
{
    var memberTypeConverter = TypeDescriptor.GetConverter(member.Type);
    var constant = Expression.Constant(value == null ? null : memberTypeConverter.ConvertFrom(value.ToString()!), member.Type);

    // 先构建LIKE逻辑的表达式
    var likeExpression = Expression.Call(
        typeof(DbFunctionsExtensions),
        nameof(DbFunctionsExtensions.Like),
        Type.EmptyTypes,
        Expression.Property(null, typeof(EF), nameof(EF.Functions)),
        member,
        constant
    );
    // 对LIKE结果取反,得到NOT LIKE逻辑
    body = Expression.Not(likeExpression);
    break;
}

普通Queryable中的NOT LIKE写法

在常规Queryable查询里,直接用逻辑非运算符!对EF.Functions.Like的结果取反即可:

// 示例:查询Name不包含"test"的实体
var query = dbContext.Entities.Where(x => !EF.Functions.Like(x.Name, "%test%"));

内容的提问来源于stack exchange,提问作者sommmen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:06:19