如果某个值存在于另一个表中,则筛选该表的索引列表
本文关键字:筛选 列表 索引 存在 如果 另一个 | 更新日期: 2023-09-27 17:53:59
所以我的数据库中有三个表:
项目:
[ProjectId] INT IDENTITY (1, 1) NOT NULL,
[UserId] NVARCHAR (128) NULL,
[Title] NVARCHAR (100) NOT NULL,
应用:
[ApplicationId] INT IDENTITY (1, 1) NOT NULL,
[ProjectId] INT NOT NULL,
[UserId] NVARCHAR (128) NOT NULL,
合同:
[ContractId] INT IDENTITY (1, 1) NOT NULL,
[ApplicationId] INT NOT NULL,
[CompanyId] NVARCHAR (128) NOT NULL,
[CVR] NVARCHAR (128) NOT NULL,
[StudentId] NVARCHAR (128) NOT NULL,
[IsSigned] BIT DEFAULT ((0)) NOT NULL,
MVC应用程序的工作方式是有一个项目索引(相对简单的db.Projects.ToList((方法(,学生可以应用它来创建应用程序。当员工进入他们的项目并看到学生的申请时,他会单击一个按钮来选择学生,从而在数据库中创建一个新的合同。如何修改
List<Project> projectsList = (from p in db.Projects select p).ToList();
以便只显示未"承包"的项目?合同具有applicationId,当可以检索应用程序时,可以从中检索projectId。应该有某种方法可以轻松地检查Contracts表中是否存在projectID,如果存在,则不应在索引中显示该项目。
也许您想要
List<Project> projectsList = (from p in db.Projects
from a in db.Applications
on p.ProjectId equals a.ProjectId
from c in db.Contracts
on a.ApplicationId equals c.ApplicationId into CC
from c in CC.DefaultIfEmpty()
where c == null
select p).ToList();
List<Project> projectsList =
db.Projects.Where(
p =>
!db.Contracts.Join(db.Applications, c => c.ApplicationId, a => a.ApplicationId,
(c, a) => a.ProjectId).Contains(p.ProjectId)).ToList();
答案如下:(