2013-02-28 121 views
1

我有两个实体:实体框架。查询Entitties具有多对多关系

public class Banner { 
    public Int32 Id { get; set; } 
    public String Name { get; set; } 
    public virtual ICollection<Role> Roles { get; set; } 
} // Banner 

public class Role { 
    public Int32 Id { get; set; } 
    public String Name { get; set; } 
    public virtual ICollection<Banner> Banners { get; set; } 
} // Role 

我的角色ID列表:

List<Int32> roles; 

我需要找到一个包含角色的至少一个所有横幅在我的列表中:

context.Banners.Where(x => x.Roles.Contains(????)) 

我该怎么做?

谢谢你, 米格尔

回答

1

你接近:

context.Banners.Where(x => x.Roles.Any(r => roles.Contains(r.Id))); 
+0

这就是我一直在寻找。谢谢。 – 2013-02-28 21:17:16

1
context.Roles.Where(r => roles.Contains(r.Id)).SelectMany(r=>r.Banners) 
0

你需要运行嵌套Anys:

context.Banners.Where(x => roles.Any(roleId => x.Roles.Any(BannerRole => roleId == BannerRole.Id)