具有过滤器的ObservableCollection枚举器

时间:2015-07-30 08:19:56

标签: c# .net linq generics collections

我需要从可观察的集合中过滤掉一些项目。以前,使用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服务来同步这些更改。

1 个答案:

答案 0 :(得分:0)

一个ObservalbeCollection确实从一个集合继承而来自IEnumerable。 “完全相同的方式”将是:

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

也许我正在以错误的方式解释。这是你想要实现的目标吗?