1

我有两个实体:

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(????))

我怎样才能做到这一点?

谢谢你,米格尔

4

3 回答 3

1
context.Roles.Where(r => roles.Contains(r.Id)).SelectMany(r=>r.Banners)
于 2013-02-28T18:34:47.563 回答
1

你很接近:

context.Banners.Where(x => x.Roles.Any(r => roles.Contains(r.Id)));
于 2013-02-28T19:46:05.597 回答
0

您需要运行嵌套的 Anys:

context.Banners.Where(x => roles.Any(roleId => x.Roles.Any(BannerRole => roleId == BannerRole.Id)
于 2013-02-28T18:37:06.437 回答