2012-04-05 112 views
1

我使用微軟PUBS數據庫,這有兩個關係表的出版商和pub_info出版商都在pub_id上現場和pub_info有發行商表的外鍵PUB_ID生成LINQ查詢

我試圖讓那些記錄的主鍵,其在出版商表,但使用LINQ查詢 不pub_info表可我知道SQL

select pub_id from publisher where pub_id not in(select pub_id from pub_info); 

var data =db.publisher.where(x=>db.pub_info.select(x1=>x1.pub_id).Contains(x)).Select(x.pub_id) 

得到錯誤的查詢,同時執行這個查詢

但我不能夠GE關於LINQ

+0

**你什麼錯誤** – SLaks 2012-04-05 13:07:11

+0

問一個問題[再次](HTTP ://stackoverflow.com/questions/10016597/generating-linq-query)非常糟糕! – 2012-04-06 09:43:30

回答

1

產生相同的查詢t計,我認爲你可以做這樣的事情

var excludedIds = db.pub_info.Select(pi => pi.pub_id).ToArray(); 

var data = db.publisher.Where(p => !excludedIds.Contains(p.pub_id); 

我可能是錯的,但我想我還記得,它不能在一個回合進行。

編輯:不是在一回合意味着我認爲你必須「枚舉」excludedIds。 但是,您可以在一個查詢中編寫它,當然。

1

您可能能夠做到這一點:

var data=(from p in db.publisher 
      where !(from pi in db.pub_info 
        select pi.pub_id 
       ).Contains(p.pub_id) 
      select p.pub_id 
     ); 

或者,這也可能工作:

var data=(from p in db.publisher 
      where !db.pub_info.Select(pi => pi.pub_id).Contains(p.pub_id) 
      select p.pub_id 
     );