我有一个名为Values的Value对象的ObservableCollection。 值对象具有名称,百分比和大小属性。 百分比在所有值中计算。
然后,我有一个图表控件绑定到从按百分比排序的值创建的IcollectionView。
var IValues = (CollectionView)new CollectionViewSource { Source = Dmodel.Values }.View;
Ivalues.SortDescriptions.Add(new SortDescription("Percentage", ListSortDirection.Descending));
我可以根据名称,大小,百分比......应用过滤器。
IValues.Filter = o =>
{
Value v = o as Value;
return v.Name.Contains(SearchedText);
}
但是,我如何过滤IcollectionView的前N个值? 我知道如何在ObservableCollection中用简单的方法来做到这一点:
Values = Values.OrderByDescending(x => x.Percentage).Take(10);
但我更喜欢保持原始数据源不变,因为我使用绑定ICollectionView的用户控件,所有过滤逻辑都在后面的控制代码中。
谢谢!
答案 0 :(得分:0)
顺便说一下...
int count = 0;
int max = 50;
IValues.Filter += o => ++count <= max;
将过滤IValues中的前50个(最大)对象...