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

如何在.NET 6 EF Core的LINQ中使用多值Contains查询记录

正确使用LINQ Contains处理动态列表查询

你当前代码的问题是搞反了Contains的调用逻辑——你需要判断数据库中jobProfile.Role的值是否存在于你的Roles列表中,而不是让单个Role字段去包含整个列表。

基础匹配:Role值完全匹配列表元素

如果你的需求是检索Role字段和列表中任意一个元素完全相等的记录,直接调换Contains的调用方即可:

List<string> Roles = new List<string>() { "Business Analyst", "Business Analysis Lead", "Application Support Analyst" };

// 查询表达式写法
var records = (from jobProfile in db.JobProfiles
               where Roles.Contains(jobProfile.Role) 
               select jobProfile).ToList();

// 方法链式写法(更简洁)
var records = db.JobProfiles
                .Where(job => Roles.Contains(job.Role))
                .ToList();

EF Core会自动将这个逻辑转换为SQL的IN子句,不管列表元素数量多少,都能正确生成对应的查询语句。

进阶匹配:Role字段包含列表中任意子串

如果你的需求是Role字段包含列表中任意一个关键词(比如Role值是"Senior Business Analyst",要匹配列表里的"Business Analyst"),可以用Any配合Contains实现:

var records = db.JobProfiles
                .Where(job => Roles.Any(role => job.Role.Contains(role)))
                .ToList();

这种写法会被EF Core解析为多个LIKE条件的OR组合,满足模糊匹配的需求。

内容的提问来源于stack exchange,提问作者K.Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:50:43