Combiner Plusieurs Prédicats

Est-il possible en c# .NET 2.0! pour combiner plusieurs Prédicats?

Disons que j'ai le code suivant.

List<string> names = new List<string>();
names.Add("Jacob");
names.Add("Emma");
names.Add("Michael");
names.Add("Isabella");
names.Add("Ethan");
names.Add("Emily");

List<string> filteredNames = names.FindAll(StartsWithE);

static bool StartsWithE(string s)
{
    if (s.StartsWith("E"))
    {
        return true;
    }
    else
    {
        return false;
    }
}

Cela me donne:

Emma
Ethan
Emily

Donc c'est plutôt cool, mais je sais voulez être en mesure de filtrer à l'aide de plusieurs prédicats.

Donc, je veux être en mesure de dire quelque chose comme ceci:

List<string> filteredNames = names.FindAll(StartsWithE OR StartsWithI);

Afin d'obtenir:

Emma
Isabella
Ethan
Emily

Comment puis-je y parvenir?
Actuellement, je suis juste filtrage de la liste complète deux fois et en combinant les résultats par la suite. Mais, malheureusement, c'est tout à fait inefficent et plus important encore, je perds l'ordre de tri d'origine, ce qui n'est pas acceptable dans ma situation.

J'ai aussi besoin d'être en mesure d'effectuer une itération sur un nombre illimité de filtres/prédicats comme il peut être tout à fait un lot.

Encore, il doit être un .NET 2.0 solution malheureusement je ne peux pas utiliser une version plus récente du cadre

Merci beaucoup.

InformationsquelleAutor eric | 2009-08-08