首页 > 解决方案 > 在 LINQ c# 中将 OR 转换为 And 条件数组值

问题描述

我有一个 linq 查询,它在数组或 ID 列表上用作 OR。这是代码:

现在,下面的代码就像任何导师都有 Subject1 或 Subject2 一样工作,如果任一导师有其中一个,它将列出列表,我想获取同时拥有这两个的记录或导师列表。

query = query.Where(x => x.TutorSubjects.Any(q => q.SubjectId.HasValue && filter.Subjects.Contains(q.SubjectId.Value)));

我想将它转换为“和”条件,它应该像在 Filter.Subjects 中指定的列表和所有 id 一样工作。

我试图添加一些在谷歌上给出的例子,但我没有得到预期的结果。我是 LINQ 和 EF 的初学者。请帮我。

不确定包含是否会起作用,因为它在谷歌上的几篇文章中提到。

标签: c#linqentity-framework-core

解决方案


您可以使用.All()

query = query.Where(x => x.TutorSubjects.All(q => q.SubjectId.HasValue && filter.Subjects.Contains(q.SubjectId.Value)));

推荐阅读