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
Vous devez vous connecter pour publier un commentaire.
Noter que ceci ne fonctionnera pas si listData est plus que listFilter, de même que votre code.
OriginalL'auteur Yuriy Faktorovich
Dans le cas général, vous pouvez faire:
OriginalL'auteur Ani
Référence:
http://msdn.microsoft.com/en-us/library/bb548547.aspx
OriginalL'auteur Meligy