C# Linq到SQL嵌套
我有3张桌子 工作人员(ID、代码、姓名) 项目(ID、ProName、描述) Retrietbl(IDworker,IDProject) 当我选择一个项目时,我将显示选定项目中的工作人员和不在选定项目中的工作人员。 此代码用于选定项目中的工作人员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
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 )