Объединить несколько предикатов

Есть ли способ в c # .NET 2.0! объединить несколько предикатов?

Допустим, у меня есть следующий код.

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

Это дает мне:

Emma
Ethan
Emily

Так что это довольно классная штука, но я знаю, что хочу иметь возможность фильтровать, используя несколько предикатов.

Поэтому я хочу сказать что-то вроде этого:

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

Чтобы получить:

Emma
Isabella
Ethan
Emily

Как мне этого добиться? В настоящее время я просто дважды фильтрую полный список и впоследствии объединяю результаты. Но, к сожалению, это неэффективно, и, что еще важнее, я теряю первоначальный порядок сортировки, что неприемлемо в моей ситуации.

Мне также нужно иметь возможность перебирать любое количество фильтров / предикатов, поскольку их может быть довольно много.

Опять же, это должно быть решение .NET 2.0, к сожалению, я не могу использовать более новую версию фреймворка

Большое спасибо.

Ответы на вопрос(7)

Ваш ответ на вопрос