HI,LINQ運營商如中
我有3個表:剪輯,書籍和之間的關係剪貼簿
問題是: 我需要得到書有bookID = 4我的意思是多對多
在簡單的文本SQL它會是這樣的:
select * from Clips where clipID in (select clipID from ClipBook where bookID=4)
的問題是:
我怎樣才能做到這一點與的LINQ無需操作員加入當然
HI,LINQ運營商如中
我有3個表:剪輯,書籍和之間的關係剪貼簿
問題是: 我需要得到書有bookID = 4我的意思是多對多
在簡單的文本SQL它會是這樣的:
select * from Clips where clipID in (select clipID from ClipBook where bookID=4)
的問題是:
我怎樣才能做到這一點與的LINQ無需操作員加入當然
這可能是一個解決方案;
from cb in ClipBooks
where cb.BookID == 4
select cb.Clip;
或
ClipBooks.Where(cb => cb.BookId == 4).Select(cb => cb.Clip);
Contains方法是在LINQ的轉換成IN操作,例如:
String[] cities = {"London", "Paris", "Madrid"};
from p in context.Person
where cities.Contains(p.Adress.City)
select p
被翻譯成SQL子句等:.. WHERE a.City in ('London', 'Paris', 'Madrid')
其中a是後與Person聯接的地址表別名表。
編輯:
你可以寫沒有一個子查詢單查詢,但這次將被轉換爲連接最有可能:
var clips = (from c in context.ClipBooks
where c.BookID == 4
select c.Clip).Distinct();
或
var clips = from c in context.Clip
where c.ClicBooks.Any(cb => cb.BookID == 4)
select c
任何被翻譯成存在()
我不unterstand爲什麼你不想使用加入這一個。 – VVS 2008-11-14 09:45:19