c# - 在 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 的初学者。请帮我。
不确定包含是否会起作用,因为它在谷歌上的几篇文章中提到。
解决方案
您可以使用.All()
:
query = query.Where(x => x.TutorSubjects.All(q => q.SubjectId.HasValue && filter.Subjects.Contains(q.SubjectId.Value)));
推荐阅读
- git - 如何在 git 中合并 PR 后重新设置开发分支?
- angular - Angular 热敏打印不适用于 HTTP 而不是 HTTPS
- java - 如何在 Drools 文件中传递多个对象并提取所需的对象
- python - 从 Fortran 到 Python 的转换是傅里叶变换
- sql-server - SQL Server - updlock,可序列化不会阻止 100%
- c# - 在C#中使用内存流下载excel文件
- minio - 无法运行 Minio 客户端
- javascript - 如何在 Angular 9 中调用其他函数中的函数?
- html - 仅在一个圆圈中为一个线性渐变颜色停止设置动画
- python - 这些警告是什么?如何解决这个问题?