带有过滤器的ObservableCollection枚举器

本文关键字:枚举 ObservableCollection 过滤器 | 更新日期: 2023-09-27 18:05:25

我需要从一个可观察集合中过滤掉一些项目。之前,对于IEnumerable,我做的是:

private IEnumerable _myCollection {get; set;}
public IEnumerator<MyType> GetEnumerator()
{
   var filteredType = _myColletion.Where(t => t.MyProperty.State != States.NeedsDelete);
return filteredType.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
   return GetEnumerator();
}

我现在使用的是ObservableCollection。我该如何实现同样的东西呢?

编辑(上下文):

我正在跟踪一些实体,在内存中处理它们,我的想法是,最后,我把这些实体推回web服务。可观察对象集合中的每个对象都有一个状态,比如"NeedsCreate"、"NeedsDelete"、"NeedsUpdate"或"Unchanged"。然后,我将遍历这些状态,并调用适当的web服务来同步这些更改。

ObservalbeCollection继承自Collection,继承自IEnumerable。"完全相同的方式"应该是:

var collection = new ObservableCollection<Type>();
public IEnumerator<Type> GetEnumerator() {
    return collection
        .Where(i => i.Property.State != States.NeedsDelete)
        .GetEnumerator();
}

也许我理解错了。这就是你想要达到的目标吗?

带有过滤器的ObservableCollection枚举器