2012-06-10 163 views
0

我正在處理我的最後一項任務,我正在追蹤,我試圖檢索藝術家列表,其中每個藝術家都有多個相冊,其中每個都有多個曲目。在這種選擇中,我的任務是隻選擇每張專輯的一定數量的曲目,而不是全部曲目。這就是我被卡住的地方。Linq到實體子查詢,限制子查詢中的結果

到目前爲止,我嘗試登陸我:

var result = (from ta in db.ARTIEST 
join tb in db.ALBUM on ta.ARTIEST_ID equals tb.ARTIEST_ID 
join tc in db.TRACK on tb.ALBUM_ID equals tc.ALBUM_ID 
where tb.TITEL == param && (
     from td in db.TRACK 
     where td.ALBUM_ID == tb.ALBUM_ID 
     select td.ALBUM_ID 
     ).Take(3).Contains(tb.ALBUM_ID) 
select ta); 

基本上,我的問題是,如何建立使用LINQ查詢到連接2個表給Artiest表,同時限制了選擇的結果實體從第三張表到3個記錄?

+0

什麼是你的起點?你製作了EF模型嗎?代碼優先,數據庫優先? –

+0

我首先用數據庫製作了EF模型。我連接的3個實體都在數據庫和模型中。他們遵循以下連接:Artiest 1-> n Album 1-> n Track。 –

回答

0

最簡單的就是用專輯和曲目之間的導航屬性:

from artist in db.Artists 
join album in db.Albums on artist.ARTIEST_ID equals album.ARTIEST_ID 
where album.TITEL == param 
select new { artist, album, FirstTracks = album.Tracks.Take(3) }