过滤 ObservableCollection

Gow*_*ham 7 .net c# silverlight windows-phone-7

我对编码很陌生,正在尝试学习为 Windows 手机编码。自上周以来,我一直被困在一个问题上,这让我发疯。

我有一个ObservableCollection这样的定义:

public ObservableCollection<Note> Items { get; private set; }
Run Code Online (Sandbox Code Playgroud)

Note班有两个变量,它叫IndexCategory

我想过滤ObservableCollection以便我可以从中选择一个特定的元素。

有没有一种简单的方法可以做到这一点?任何帮助将不胜感激!

Dav*_*ras 6

你可以做:

var myCollection = GetNoteCollection(...);

var result = myCollection.Where(w => w.Category.Equals("MyCategory"));
Run Code Online (Sandbox Code Playgroud)


Ric*_*ter 6

更新:这些类不再可用,请查看ObservableCollectionView

原始答案
尝试以下课程之一:OrderedObservableCollectionFilteredObservableCollection

OriginalList = new ObservableCollection<Person>();
FilteredList = new OrderedObservableCollection<Person, int>(originalList, p => p.Age, a => a.Age >= 18);
Run Code Online (Sandbox Code Playgroud)

仅包含FilteredList年龄 >= 18 的人员,所有人员均按年龄排序。如果 中发生变化,将FilteredList自动更新OriginalList。如果OriginalList是全局的并且FilteredList在页面上使用,则必须调用FilteredList.Unload()以删除事件绑定 - 这是垃圾收集器可以释放FilteredList.

这些类尚未经过充分测试,如果您发现问题,请在此处报告。

顺便说一句:我对这个方法不满意Unload()。是否可以添加诸如弱事件引用之类的东西?