C# 如何在实体框架中选择多首由多个艺术家创作的歌曲?

C# 如何在实体框架中选择多首由多个艺术家创作的歌曲?,c#,entity-framework,linq,C#,Entity Framework,Linq,我正在尝试选择由几个艺术家创作的歌曲 这些是我的桌子: Artist ----------------------------- (id,nickName) Song ----------------------------- (id,name,photoPath) 艺术家和歌曲有着多对多的关系 我可以这样做: var songs = ctx.song .Where(s => s.artist.Any(a => a.nickName == "jack") &&a

我正在尝试选择由几个艺术家创作的歌曲

这些是我的桌子:

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

Song
-----------------------------
(id,name,photoPath)
艺术家和歌曲有着多对多的关系

我可以这样做:

var songs = ctx.song
    .Where(s =>  s.artist.Any(a => a.nickName == "jack") && s.artist.Any(a => a.nickName == "sara"))
    .ToList()
然而,我认为选择EF中有3个或更多艺术家的歌曲并不是最好的方式。如何编写此代码?

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

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

您可以对照以下艺术家集合进行检查:

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

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

我想你应该把所有的都去掉!从上面。。它仍然会工作,而且会更好,这一切都不是必需的。