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

时间:2012-03-05 20:59:06

标签: c# asp.net-mvc entity-framework code-first

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

1 个答案:

答案 0 :(得分:0)

这是一种方式:

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的电影。