我正在使用实体框架核心的.NET 6应用程序。我正在使用LINQ创建记录搜索查询,我希望在那里接收字符串列表。字符串值的数量不是固定的,将发生变化。我如何在LINQ容器中使用列表?
List<string> Roles = new List<string>() { "Business Analyst", "Business Analysis Lead", "Application Support Analyst" };
var records = (from jobProfile in db.JobProfiles
where jobProfile.Role.Contains(Roles)
select jobProfile).ToList();
2条答案
按热度按时间gwbalxhn1#
大概是这样的:
或具有流畅界面:
Roles
可以是任何IEnumerable
。EF会将方法呼叫转换为IN
子句。请注意,如果源(此处为
db.JobProfiles
)不再是IQueryable
,而是IEnumerable
,则您将使用O(n).Contains
调用。只要它是EF,就可以使用IEnumerable
来表示Roles
,因为在这种情况下实际上并没有调用.Contains
,但对于LINQtoObjects,您可能希望确保它是某种类型的Set。如果
Role
是一个string
属性而不是一个实体,那么就简单一些:或具有流畅界面:
5ssjco0h2#
您需要按角色列表中包含职务配置文件角色的位置进行筛选:
...或流利地: