4

私は Entity Framework を使用している
ので、2 つのテーブル (tblContractor と tbSiteByCont テーブル) を使用して SQL コマンドを記述したいと考えています。SQLではこんな感じ

SELECT     PKConID, Fname, Lname
FROM         tblContractor
WHERE     (PKConID NOT IN
                          (SELECT     FKConID
                            FROM          tbSiteByCont
                            WHERE      (FKSiteID = 13)))

しかし、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;

しかし、これはうまくいきません。では、どのように書けばよいのでしょうか。手順は何ですか?私はLinqが初めてです。

4

3 に答える 3

19
var _result = from a in tblContractor
              where !(from b in tbSiteByCont
                        where FKSiteID  == 13
                        select b.FKConID)
                        .Contains(a.PKConID)
              select a;

また

var siteLst = tbSiteByCont.Where(y => y.FKSiteID == 13)
                          .Select(x => x.FKConID);
var _result = tblContractor.Where(x => !siteLst.Contains(x.PKConID));
于 2013-03-15T04:34:21.050 に答える