过滤ICollectionView前十(或任何前N)

时间:2018-02-07 07:13:34

标签: c# binding icollectionview

我有一个名为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的用户控件,所有过滤逻辑都在后面的控制代码中。

谢谢!

1 个答案:

答案 0 :(得分:0)

顺便说一下...

int count = 0;
int max = 50;
IValues.Filter += o => ++count <= max;

将过滤IValues中的前50个(最大)对象...