2012-04-30 3 views
3

아래 문제에 대한 LINQ/Lambda 식 솔루션이 있는지 궁금합니다.다른 목록의 실제 조건에 따라 일반 목록에서 항목 선택

I가 2 개 일반적인 목록

목록 1

public class Data 
{ 
    public string ID { get; set;} 
    public string Package { get; set;} 
} 

List<Data> listData = new List<Data>(); 

Data data1 = new Data { ID = "1", Package = "Test" }; 
Data data2 = new Data { ID = "2", Package = "Test2" }; 
Data data3 = new Data { ID = "3", Package = "Test2" }; 
Data data4 = new Data { ID = "4", Package = "Test4" }; 

listData.Add(data1); 
listData.Add(data2); 
listData.Add(data3); 
listData.Add(data4); 

나는 "listFilter에서 진정한 (1) 기준에 따라"이 listData "를 필터링하려는 2

List<int> listFilter = List<int>(); 

listFilter.Add(1); 
listFilter.Add(0); 
listFilter.Add(0); 
listFilter.Add(1); 

목록 ". 위의 예에서 data1과 data4를 새 목록으로 가져올 수 있어야합니다.

현재로서는 다음과 같이 for 루프를 사용하고 있습니다.

누군가가 나에게 이것을 달성하기 위해 LINQ 또는 람다 표현을 사용하면 좋을 것입니다.

감사

일반적인 경우

발안이

+0

은'어디()'메소드는 그 가능성이 당신이 필요로하는 모든이다, 조건 위임하는 인덱스를 전달 과부하를 가지고 있으므로. – Meligy

답변

7
var results = listData.Where((item, index) => listFilter[index] == 1); 

참고.

4

, 당신이 할 수 있습니다 :이 listData는 더 이상 listFilter보다 같은 코드로 인 경우이 실패합니다

var result = listData.Zip(listFilter, (data, filter) 
          => new { Data = data, Filter = filter }) 
        .Where(tuple => tuple.Filter == 1) 
        .Select(tuple => tuple.Data) 
        .ToList(); 
관련 문제