如何使用LINQ查找子实体列表包含另一个列表的实体

时间:2013-04-27 11:58:03

标签: linq linq-to-sql linq-to-entities linq-to-objects

我有一个复杂的对象,其中包含2个更复杂对象的列表。

第一个对象如下:

public object1 {
        public string Name { get; set; }
        public virtual ICollection<object2> objects2 { get; set; }
        public virtual ICollection<object3> objects3 { get; set; }
}

其中object2和object3相同,具有ID和Name字段。如:

public object {
   public int ID{ get; set; }
   public string Name { get; set; }
}

我想使用ID(int [] id)的列表/数组来搜索'object1'的列表,以便字段'objects2'包含所有数组o2_ids和'objects3'所有数组o3_ids(每个是int [])。

1 个答案:

答案 0 :(得分:2)

from o1 in obj1List
where o2_ids.All(o2id => o1.objects2.Any(o2 => o2.ID == o2id))
&& o3_ids.All(o3id => o1.objects3.Any(o3 => o3.ID == o3id))
select o1