如何从多对多关系中选择关联表

本文关键字:选择 关联 关系 | 更新日期: 2023-09-27 18:26:40

在我的MVC应用程序中,我有一种多对多关系表、电影和标记代码优先的方法。我希望用户能够选择所有与标签相关的电影。例如,我想选择标签id=2的所有电影。我需要lambda查询,它将允许我这样做。感谢任何帮助。

如何从多对多关系中选择关联表

这是一种方法:

var moviesWithTag2 = context.Movies
    .Where(m => m.Tags.Any(t => t.Id == 2))
    .ToList();

如果没有Id为2的标记,这将返回一个空集合。

备选方案(如果没有Id为2的标签,则返回null):

var moviesWithTag2 = context.Tags
    .Where(t => t.Id == 2)
    .Select(t => t.Movies)
    .SingleOrDefault();

如果你也想要Tag实体,你可以加载它,包括它的电影:

var tag2 = context.Tags.Include(t => t.Movies)
    .Single(t => t.Id == 2);

tag2.Movies将包含标签Id为2的电影。