Linq To Entities子查询,限制子查询中的结果

时间:2012-06-10 16:52:34

标签: linq-to-entities subquery limit

我正在完成我对未成年人的最终任务,我正在尝试检索艺术家列表,其中每个都有多个相册,每个相册都有多个曲目。在那个选择中,我的任务是每张专辑只选择一定数量的曲目,而不是全部。这就是我被困住的地方。

到目前为止,我的尝试让我知道了这一点:

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 to Entities构建查询,将2个表连接到Artiest表,同时将第3个表中的选定结果限制为3个记录?

1 个答案:

答案 0 :(得分: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) }