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
どうすればこれを達成できますか?現在、完全なリストを 2 回フィルタリングし、後で結果を結合しています。しかし残念ながら、これは非常に非効率的であり、さらに重要なことに、元の並べ替え順序が失われます。これは私の状況では受け入れられません。
また、非常に多くのフィルター/述語が存在する可能性があるため、任意の数のフィルター/述語を反復できる必要があります。
繰り返しますが、.NET 2.0 ソリューションである必要があります。残念ながら、新しいバージョンのフレームワークは使用できません。
どうもありがとう。