我有一个与此类似的问题,但与EntityCollection<>
.
EntityCollection
implements Remove()
,允许您一次从列表中删除单个项目。但是,我想实现一个可以一次删除多个项目的扩展方法,类似于IList<T>
'sRemoveAll(Predicate<T> match)
方法。
一种想法是遍历列表并删除项目。就像是:
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);
}
}
但是,这将引发异常,因为您无法修改正在迭代的集合。
另一个想法是构建要删除的项目的临时列表,然后遍历该列表并从集合中删除每个项目。但是,这对我来说似乎效率低下。有更好的实现吗?