如何在Entity Framework中选择几位艺术家创作的/多首歌曲?

时间:2018-07-28 15:23:48

标签: c# entity-framework linq

我正在尝试选择由几位歌手创作的歌曲。

这些是我的桌子:

Artist
-----------------------------
(id,nickName)

Song
-----------------------------
(id,name,photoPath)

ArtistSong有着多对多的关系

我可以这样操作:

var songs = ctx.song
    .Where(s =>  s.artist.Any(a => a.nickName == "jack") && s.artist.Any(a => a.nickName == "sara"))
    .ToList()

但是,我认为在EF中选择3位或更多歌手的歌曲不是最好的方法。我该如何编写此代码?

2 个答案:

答案 0 :(得分:1)

您可以像这样检查艺术家集合:

var artists = new [] { "jack", "sara", "bob" };

var songs = ctx.song
    .Where(s => artists
        .All(a => s.artist
            .Any(x => x.nickname == a)))
    .ToList();

答案 1 :(得分:0)

我假设s.artistArtist对象的列表。如果我是对的,并且只需要具有多个歌手的歌曲,则可以使用Count属性:

var songs = ctx.song.Where(s => s.artist.Count > 1).ToList();