C# Linq到SQL嵌套

C# Linq到SQL嵌套,c#,asp.net-mvc,linq,linq-to-sql,C#,Asp.net Mvc,Linq,Linq To Sql,我有3张桌子 工作人员(ID、代码、姓名) 项目(ID、ProName、描述) Retrietbl(IDworker,IDProject) 当我选择一个项目时,我将显示选定项目中的工作人员和不在选定项目中的工作人员。 此代码用于选定项目中的工作人员 var selectedPro= from c in db.Worker from d in db.RetaleTbl wh

我有3张桌子

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

项目(ID、ProName、描述)

Retrietbl(IDworker,IDProject)

当我选择一个项目时,我将显示选定项目中的工作人员和不在选定项目中的工作人员。 此代码用于选定项目中的工作人员

var selectedPro= from c in db.Worker 
                               from d in db.RetaleTbl
                               where d.IDProject== ID && c.ID == d.IDworker
                               select c;
并且该代码不在所选项目中(但我有问题,因为retrietbl表数据有1个worker do 2项目)

现在我还需要一个不在
selectedPro

中的过滤器工作程序,这样就可以了

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 )

试试这个
where d.ProName!=selectedPro&&c.ID==d.IDworker
感谢您的帮助,但db.retrietbl中的d没有ProName字段,我认为这可能是正确的,但有错误var firstFilter=来自db中的c。db.retrietbl中的d的Worker,其中d.IDProject!=ID&&c.ID==d.IDworker选择c;好的,试试这个
where-Project.First(p=>p.ID==d.IDProject).ProName!=selectedPro&&c.ID==d.IDworker
跟着你,我收到的错误通知是:Operator'!='不能应用于'string'类型的操作数,请告诉我这是什么意思?tyGuess错误不在
where
子句中。发布您的全部查询。
SELECT * FROM WORKER WHERE ID NOT IN ( SELECT WORKERID FROM RELATETBL WHERE PROJECTID=2 )