Combinar múltiples predicados

¿Hay alguna manera en c # .NET 2.0! combinar múltiples predicados?

Digamos que tengo el siguiente 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;
    }
}

Esto me da:

Emma
Ethan
Emily

Así que esto es algo muy bueno, pero sé que quiero poder filtrar usando múltiples predicados.

Así que quiero poder decir algo como esto:

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

Para obtener:

Emma
Isabella
Ethan
Emily

¿Cómo puedo conseguir esto? Actualmente solo estoy filtrando la lista completa dos veces y luego estoy combinando los resultados. Pero desafortunadamente esto es bastante ineficiente y, lo que es más importante, pierdo el orden de clasificación original, lo cual no es aceptable en mi situación.

También necesito poder iterar sobre cualquier número de filtros / predicados ya que puede haber bastante.

Una vez más, debe ser una solución .NET 2.0 desafortunadamente no puedo usar una versión más nueva del marco

Muchas gracias.