如何使用Linq"NOT IN"

use*_*351 4 .net c# linq

我正在使用实体框架
所以我想使用两个表 - tblContractor和tbSiteByCont表编写一个sql命令.它在SQL中看起来像这样

SELECT     PKConID, Fname, Lname
FROM         tblContractor
WHERE     (PKConID NOT IN
                          (SELECT     FKConID
                            FROM          tbSiteByCont
                            WHERE      (FKSiteID = 13)))
Run Code Online (Sandbox Code Playgroud)

但我不知道怎么写Linq.

我试过这样的

  var query1 = from s in db.tblSiteByConts   
                        where  s.FKSiteID == id
                        select s.FKConID;


            var query = from c in db.tblContractors   
                        where c.PKConID != query1.Any()
                        select Contractor;
Run Code Online (Sandbox Code Playgroud)

但这不起作用.那我该怎么写呢?程序是什么?我是Linq的新手.

Joh*_*Woo 18

var _result = from a in tblContractor
              where !(from b in tbSiteByCont
                        where FKSiteID  == 13
                        select b.FKConID)
                        .Contains(a.PKConID)
              select a;
Run Code Online (Sandbox Code Playgroud)

要么

var siteLst = tbSiteByCont.Where(y => y.FKSiteID == 13)
                          .Select(x => x.FKConID);
var _result = tblContractor.Where(x => !siteLst.Contains(x.PKConID));
Run Code Online (Sandbox Code Playgroud)