2013-02-28 149 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)