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

如何在LINQ中使用List<T>集合实现动态条件查询筛选

你可以直接使用LINQ的Contains方法实现和硬编码多OR条件完全一致的效果,该方法会判断目标字段是否存在于给定的列表中,原生支持EF/EF Core等ORM框架自动翻译为SQL的IN语句,执行逻辑和你写的多个||判断完全等效。

你只需要把GetNameTable方法里的Where条件替换为以下写法即可:

private void GetNameTable(List<nUEntity> npA)
{
    var listNPA = npA.Select(x=>x.npAdm).ToList();   
    
    var result = (from t1 in table.Where(t => listNPA.Contains(t.namepAdm))
    join t2 in provtel on t1.provTel  equals t2.provTel               
    orderby t1.namepAdm                          
    select new xyEntity
    {
        //TODO
    }).ToList();
}

补充说明

  • 如果你使用的是本地对象查询而非数据库查询,该写法同样可以正常运行
  • 如果需要兼容listNPA为空的场景(空列表时不筛选该条件返回所有数据),可以把Where条件调整为:
    .Where(t => !listNPA.Any() || listNPA.Contains(t.namepAdm))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:08