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();
我想你应该把所有的都去掉!从上面。。它仍然会工作,而且会更好,这一切都不是必需的。