2013-04-27 4 views
0

두 개의 복잡한 개체 목록이 포함 된 복잡한 개체가 있습니다. 다음LINQ를 사용하여 하위 엔터티 목록에 다른 목록이 포함 된 엔터티를 찾는 방법

첫번째 목적은 :

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

object2와 같은 ID 및 이름 필드를 갖는, 동일한 오브젝트 4

있다. 예를 들면 : objects2 objects3 ''모든 배열 o2_ids 등을 포함 '필드 있도록 오브젝트 1의의'

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

나는 목록을 검색 할 ID 목록/배열 ([] ID를 int)를 사용하고 싶습니다 모든 배열 o3_ids (각각 int []).

답변

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 
+0

고맙지 만 작동하지 않습니다. 'contains'는 'object2'또는 'object3'유형의 객체를 예상합니다. 여기서 o2id/o3id는 int입니다. object2 또는 object3의 ID에 대한 참조가 어디 있지 않습니다. 제발 좀 바꿔 줄래? – Roman

+0

맞아, 미안 해요. 이제 적절한 조건 자로'Any() '를 사용하도록 업데이트했습니다. –

+0

완벽한 - 감사합니다! – Roman