Połącz wiele predykatów
Czy istnieje c # .NET 2.0! połączyć wiele predykatów?
Powiedzmy, że mam następujący kod.
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;
}
}
To daje mi:
Emma
Ethan
Emily
Więc to jest całkiem fajne, ale wiem, że chcę mieć możliwość filtrowania przy użyciu wielu predykatów.
Chcę więc móc powiedzieć coś takiego:
List<string> filteredNames = names.FindAll(StartsWithE OR StartsWithI);
Żeby dostać:
Emma
Isabella
Ethan
Emily
Jak mogę to osiągnąć? Obecnie filtruję całą listę dwa razy i łączę wyniki później. Ale niestety jest to dość nieefektywne i co ważniejsze, tracę oryginalny porządek sortowania, co w mojej sytuacji jest nie do przyjęcia.
Muszę też być w stanie iterować po dowolnej liczbie filtrów / predykatów, ponieważ może być ich sporo.
Ponownie musi to być rozwiązanie .NET 2.0, niestety nie mogę użyć nowszej wersji frameworka
Wielkie dzięki.