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

能否为LINQ的Where筛选器添加动态条件判断?

可以实现,修改方案如下

直接通过条件分支动态构建查询逻辑即可,完全满足你的需求:

[HttpGet("search")]
public IActionResult SearchPerson([FromQuery] string v="A", [FromQuery] int page=1)
{
    var query = _ctx.People.AsQueryable();
    
    // 根据参数v的长度切换筛选规则
    if (v.Length > 1)
    {
        query = query.Where(p => (p.FirstName + p.LastName).Contains(v));
    }
    else
    {
        query = query.Where(p => p.FirstName.StartsWith(v));
    }
    
    var personList = query.Skip((page - 1) * 30)
                          .Take(30);    
    return Ok(personList);
}

额外提示

  • EF Core 可以正确识别p.FirstName + p.LastName这类字符串拼接操作,会将其翻译为对应数据库的字符串拼接SQL函数(比如SQL Server的CONCAT),不会把全量数据拉到内存处理,性能不受影响。
  • 如果参数v可能为空字符串,建议额外增加!string.IsNullOrEmpty(v)的判断,避免出现不符合预期的筛选结果。

内容的提问来源于stack exchange,提问作者T'sen Ang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 06:36:27