Linq to SQL Nested

本文关键字:Nested SQL to Linq | 更新日期: 2023-09-27 18:32:36

我有 3 张桌子

工作人员(ID,代码,姓名)

项目(ID,专业名称,描述)

RetaleTbl(IDworker,IDProject)

当我选择一个项目时,我将显示所选项目中的工作人员和所选项目中未显示的工作人员。并且此代码在选定的项目中工作

var selectedPro= from c in db.Worker 
                               from d in db.RetaleTbl
                               where d.IDProject== ID && c.ID == d.IDworker
                               select c;

并且此代码工作线程不在选定的项目中(但我有问题,因为 RetaleTbl 表数据有 1 个工人做 2 个项目)

var firstFilter= from c in db.Worker 
                               from d in db.RetaleTbl
                               where d.IDProject != ID && c.ID == d.IDworker
                               select c;

现在我还需要一个过滤器 工人不在selectedPro

Linq to SQL Nested

这应该可以做到。

var projectId= 2; // replace with a valid projectID value
var workersNotInProject = db.Worker.Where(c => !(db.RetaleTbl
                                  .Where(s => s.IDProject== projectId)
                                  .Select(d => d.IDWorker))
                         .Contains(c.ID)).ToList();

这基本上是 SQL 查询的 LINQ 版本。

SELECT * FROM WORKER WHERE ID NOT IN ( SELECT WORKERID FROM RELATETBL WHERE PROJECTID=2 )