我有一个 linq 查询,它在数组或 ID 列表上用作 OR。这是代码:
现在,下面的代码就像任何导师有 Subject1 或 Subject2 一样工作,如果任何一位导师有其中一个,它将列出列表,我想获得记录或导师列表谁有他们两个。
query = query.Where(x => x.TutorSubjects.Any(q => q.SubjectId.HasValue && filter.Subjects.Contains(q.SubjectId.Value)));
我想将它转换为“And”条件,它应该像 Filter.Subjects 中指定的列表和所有 id 一样工作。
我尝试添加一些在 Google 上给出的示例,但没有得到预期的结果。我是 LINQ 和 EF 的初学者。请帮我。
不确定 Contains 是否会起作用,因为它在 Google 上的几篇文章中有所提及。
您可以使用 .All()
:
query = query.Where(x => x.TutorSubjects.All(q => q.SubjectId.HasValue && filter.Subjects.Contains(q.SubjectId.Value)));
我是一名优秀的程序员,十分优秀!