2013-06-18 8 views
1

목록으로 하위 컬렉션 필터링 자식 문제가 발생했습니다.목록으로 필터 하위 컬렉션

내 데이터 모델은 다음과 같습니다. 내가 필터에 의해 데이터 소스를 필터링하려는

 List<Catalog> dataSource; 
     List<Area> filter; 

, 뭔가

from v in dataSource where v.Areas.Contains(filter) select v 

좋아하지만 나던 작업 :

class Catalog 
    { 
     public int ID { get;set;} 
     public string Name { get;set;} 
     public IList<Area> Areas { get;set;} 
    } 

    class Area 
    { 
     public int ID { get;set;} 
     public string Name { get;set;} 
    } 

내가 다음과 같은 데이터가 있다고 가정 할 수 있습니다.

 List<Catalog> result = new List<Catalog>; 
     foreach (Area area in filter) 
     { 
       result.AddRange((from v in dataSource where v.Areas.Contains(area) select v).ToList()); 
     } 

그러나 최적이 아닌 다음과 같이

대신 내가 할 수 있습니다.

는 사람이 어떻게

답변

0

이 시도 목록이 아이 컬렉션을 필터링하는 방법을 말해 줄래 :

from v in dataSource where v.Areas.Intersect(filter).Any() select v; 

이 작동하기 때문에 그들은 공통점이 무엇이든이있는 경우 두 목록의 공통점은, 어떤 Intersect 반환 그들은 일치합니다.

+0

나 일하지 마라. 내가 부숴까지 LinqPad에서 무차별 한 행동을 많이한다. –

+0

@KeldJakobsen 죄송합니다. 질문을 undestand 수 없습니다. –