Есть ли способ в С#.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, к сожалению, я не могу использовать более новую версию фреймворка
Большое спасибо.