如何查询与某个过滤器匹配的集合属性中的任何项目的实体?

时间:2014-05-06 20:56:53

标签: c# entity-framework

好吧,我正在使用实体框架,代码优先方法。我有以下实体类:

class EntityA
{
  public int EntityAId { get; set; }
  public virtaul ICollection<EntityB> Bs { get; set; }
}

class EntityB
{
  public int EntityBId { get; set; }
  public bool Foobar { get; set; }
  public virtual EntityA A { get; set; }
}

鉴于DbSet<EntityA>,我试图找出如何查询EntityA中所有EntityB的所有Bs的信息。 Foobar true等于{{1}}。

如何使用EF流畅查询API执行此查询?谢谢!

1 个答案:

答案 0 :(得分:2)

var entities = dbSet.Where(m => m.Bs.Any(b => b.Foobar == true).ToList();

应该为你做。基本上 - 给我所有EntityAs,它有任何子实体B,其中foobar等于true。有关更多信息,请查看Linq和Linq to Entities

征求意见:

var dbSet= your dbset of EntityB
var id = the id of the EntityB you're querying with
var entities = dbSet.Where(m => m.A.Bs.Any(b => b.EntityBId == id)).Select(m => m.A).ToList();

再次,让我们说出来 - 从EntityB的集合中给我每个EntityA,其中EntityB的A导航道具包含id等于给定id的任何EntityB。由于您要查询一组EntityB,您必须选择该实体的A. Geeze这很难说;和bs一样多。