これに似た質問がありますが、に関する質問ですEntityCollection<>
。
EntityCollection
を実装し、リストから1つのアイテムを一度Remove()
に削除できるようにします。ただし、のメソッドと同様に、一度に複数のアイテムを削除できる拡張メソッドを実装したいと思います。IList<T>
RemoveAll(Predicate<T> match)
1つのアイデアは、リストをループしてアイテムを削除することです。何かのようなもの:
public static void RemoveAll<T>(this EntityCollection<T> collection, Predicate<T> match) where T : EntityObject
{
foreach (T o in collection)
{
if (match(o))
collection.Remove(o);
}
}
ただし、繰り返し処理しているコレクションを変更できないため、これにより例外がスローされます。
もう1つのアイデアは、削除するアイテムの一時的なリストを作成し、そのリストをループして、コレクションから各アイテムを削除することです。しかし、これは私には非効率に思えます。より良い実装はありますか?