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

EF Core中Linq查询用Like替代==:修改GetByOrg方法实现模糊查询

嘿,这个需求很常见!要把原来的精确匹配改成模糊搜索,EF Core里有几种简单直接的实现方式,我给你一一说明:

1. 最常用的包含匹配(相当于 LIKE '%org%')

直接用字符串的Contains方法就行,EF Core会自动把它转换成SQL的LIKE语句,代码改起来超简单:

public List<Prj_Detail> GetByOrg(string org) {
    var data = _context.Prj_Details.Where(w => w.Account_Name.Contains(org)).ToList();
    return data;
}

这个写法会匹配所有Account_Name中包含org字符串的记录,是最常用的模糊搜索场景。

2. 前缀/后缀匹配

如果你的需求是只匹配以org开头或者结尾的记录,可以用StartsWith或EndsWith:

  • 前缀匹配(LIKE 'org%'):
    w => w.Account_Name.StartsWith(org)
    
  • 后缀匹配(LIKE '%org'):
    w => w.Account_Name.EndsWith(org)
    

3. 自定义通配符的灵活匹配

要是你需要更灵活的匹配规则(比如用_匹配单个字符),可以用EF Core提供的EF.Functions.Like方法,它直接映射SQL的LIKE语法,记得先引入Microsoft.EntityFrameworkCore命名空间:

using Microsoft.EntityFrameworkCore;

public List<Prj_Detail> GetByOrg(string org) {
    // 这里可以自定义通配符组合,比如%匹配任意长度字符、_匹配单个字符
    var data = _context.Prj_Details.Where(w => EF.Functions.Like(w.Account_Name, $"%{org}%")).ToList();
    return data;
}

这种方式适合复杂的模糊匹配场景,比如你想搜org前面有两个字符的记录,就可以写成"__%org%"。

另外要放心:不管用哪种方式,EF Core都会自动参数化你的查询,不用担心SQL注入的问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:32:18