实体框架:按其属性值过滤嵌套集合

时间:2017-10-29 16:26:27

标签: entity-framework

我的模型如下

class MyClass()
{
   public int Id { get; set; }
   public List<Item> Items { get; set; }
}

class Item
{
     public int Id { get; set; }
     public string Name { get; set; }
}

两者都被添加到DBContext DbSets,现在我想使用MyClassName属性的值过滤掉Items采集。我该怎么做?

1 个答案:

答案 0 :(得分:1)

首先以这种方式纠正你的POCO:

public class MyClass
{
   public int Id { get; set; }
   public virtual ICollection<Item> Items { get; set; }
}

public class Item
{
   public int Id { get; set; }
   public string Name { get; set; }

   public virtual MyClass MyClass {get;set}
   public int MyClassId {get;set}
}

<强>用法:

提交的查询将返回所有MyClass个实例,其中至少一个Name将满足条件:

var answer = db.MyClass.Where(c => c.Items.Any(item => item.Name == "Sam")).ToList();

此查询将返回所有MyClass个实例,其中所有Name将满足条件:

var answer = db.MyClass.Where(c => c.Items.All(item => item.Name == "Sam")).ToList();