Combine Predicados Múltiplos

Existe alguma maneira no c # .NET 2.0! combinar vários predicados?

Digamos que eu tenha o seguinte código.

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;
    }
}

Isso me dá:

Emma
Ethan
Emily

Então, isso é muito legal, mas eu sei que quero filtrar usando vários predicados.

Então eu quero poder dizer algo assim:

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

Para obter:

Emma
Isabella
Ethan
Emily

Como posso conseguir isso? Atualmente estou apenas filtrando a lista completa duas vezes e combinando os resultados depois. Mas infelizmente isso é bastante ineficiente e, mais importante ainda, eu perco a ordem de classificação original, o que não é aceitável na minha situação.

Eu também preciso ser capaz de iterar sobre qualquer número de filtros / predicados, pois pode haver bastante coisa.

Novamente, ele precisa ser uma solução .NET 2.0, infelizmente não posso usar uma versão mais recente do framework

Muito obrigado.

questionAnswers(7)

yourAnswerToTheQuestion