2010-07-08 13 views
1

Je ne trouve aucune méthode FindAll dans ma liste, comment puis-je sélectionner des objets de la liste qui répondent à un critère spécifique, sans utiliser l'ancienne méthode d'itération?findall dans la liste <T>

List<oPage> mylist = new List<oPage>(); 

ma classe oPage a une propriété appelée Titre de type chaîne.

J'ai ajouté quelques éléments d'oPage dans myList.

maintenant je veux sélectionner tous les éléments dans mylist qui ont un titre contenant le mot 'abc' et retourner tous ces éléments dans un IEnumerable.

Comment est-ce possible?

Merci pour votre aide.

+4

Dans quel langage de programmation? – pakore

+0

Quelle version du framework .Net utilisez-vous? – GenericTypeTea

Répondre

6

Si vous utilisez .NET 3.5 ou version ultérieure, vous pouvez utiliser LINQ pour faire juste que

mylist.Where(p => p.Title.Contains("abc")); 
2

La méthode FindAll retourne un List, mais vous pouvez juste jeter les résultats à un IEnumerable<oPage>:

List<oPage> mylist = GetYourList(); 

IEnumerable<oPage> results = (IEnumerable<oPage>)myList.FindAll(
    delegate(oPage p) 
    { 
     return p.Title.Contains("abc"); 
    } 
); 
+1

Oui, exactement. Bien que s'il vous plaît utilisez une expression lambda plutôt que le délégué anonyme pour la brièveté, si vous utilisez C# 3.0+. – Noldorin