La sélection des items de liste générique basé sur la véritable condition d'une autre liste

Je me demandais si il y aurait quelque LINQ/Lambda expression de la solution pour le problème ci-dessous.

J'ai 2 générique listes

Liste 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);

Liste 2

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

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

Je voudrais filtre "listData" basé sur le vrai (1) les critères de "listFilter". Pour l'exemple ci-dessus, je dois être en mesure de tirer data1 et data4 dans une nouvelle liste.

En ce moment, je suis en utilisant une boucle for pour le faire, comme ci-dessous.

List<Data> listResult =  new List<Data>();
for(int index=0; index<listData.Count; index++)
{
    if(listFilter[index]==1)
    {
       listResult.Add(listData[index]);
    }

}

Je vous serais reconnaissant si quelqu'un pouvait me montrer à l'utilisation de LINQ ou expression Lambda pour atteindre cet objectif.

Grâce

Balan

Le Where() méthode a une surcharge qui passe à l'indice de la condition délégué, donc, c'est probablement tout ce que vous devez.

OriginalL'auteur balan | 2012-04-30