Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示ICollectionView的前X项_C#_Wpf_Filtering_Collectionviewsource_Collectionview - Fatal编程技术网

C# 显示ICollectionView的前X项

C# 显示ICollectionView的前X项,c#,wpf,filtering,collectionviewsource,collectionview,C#,Wpf,Filtering,Collectionviewsource,Collectionview,我有一个名为Suggestions的IcollectionView属性,它绑定到列表框的itemsource 我使用以下代码来设置它 // Set up Suggestions collection for filtering purposes var collectionViewSource = new CollectionViewSource(); collectionViewSource.Source = SomeCollection; // SomeCollection is of t

我有一个名为
Suggestions
IcollectionView
属性,它绑定到列表框的
itemsource

我使用以下代码来设置它

// Set up Suggestions collection for filtering purposes
var collectionViewSource = new CollectionViewSource();

collectionViewSource.Source = SomeCollection; // SomeCollection is of type IEnumerable!! 
// Create view
Suggestions = collectionViewSource.View;

Suggestions.Filter = new Predicate<object>(
                                       item =>
                                       item.ToString().StartsWith(SearchString, true, CultureInfo.CurrentCulture))
//为筛选目的设置建议集合
var collectionViewSource=new collectionViewSource();
collectionViewSource.Source=SomeCollection;//SomeCollection的类型为IEnumerable!!
//创建视图
建议=collectionViewSource.View;
建议.Filter=新谓词(
项目=>
item.ToString().StartsWith(SearchString,true,CultureInfo.CurrentCulture))
SearchString
绑定到文本框的
Text
属性,每当发生更改都会触发重新筛选集合的
建议。Refresh()


这很好,但显示了所有可用项。如何使其仅显示前X个项目?

将可见性与所有筛选的项目关联,并仅将前X个项目的可见性设置为true,或者


首先筛选所有项目,并将前x个项目放在另一个属性中,并将其绑定到UI

难道您不能将筛选
谓词
条件移动到
SomeCollection。Where
子句?:

SomeCollection = SomeCollection.Where(item => item.ToString().StartsWith(
    SearchString, true, CultureInfo.CurrentCulture)).Take(10);
collectionViewSource.Source = SomeCollection;

尝试了
SomeCollection.Cast().Take(X)
,但是它只过滤前X项,这不是我想要的。我想让它过滤整个集合,只显示前X个结果…可以使用yield只返回第一个X谢谢,我想我可以尝试一下,但这不就剥夺了
ICollectionView
的全部用途吗?我只是想到了另一种方法,你可以这样做。。。向数据类型添加索引属性,并使用filter
Predicate
like
i=>i.index