我有一个ListBox,其中包含至少1000个项目,每个类别都说“数据”具有“名称”属性。 我在列表框上方还有一个文本框,用于根据输入文本过滤列表框中的项目。如何快速查找列表框中的项目。
我尝试过这样的事情: 在textBox_textChanged事件中,我得到了文本,并使用了 CollectionViewSource类来过滤掉项目,但这会产生一个非常生涩的ui。 (我通过在我的Data类上获取Name属性并执行string.Contains()调用来过滤掉项目)
有没有办法加快搜索速度? 感谢。
答案 0 :(得分:0)
我使用LINQ过滤数千个响应时间很长。
FTSwordFilter是过滤器。当它被改变时,我在过滤列表上调用NotifgyPropertyChanged。
return FTSwords.Where(ftsWrd => ftsWrd.StemStartsWith(FTSwordFilter));
public Boolean StemStartsWith(string stemStart)
{
return (WordStem).StartsWith(stemStart);
}
将StartsWith替换为Contains
我还可以选择使用DamerauLevenshteinDistance
进行模糊滤波我是在后台任务上做的,但它足够快,我把它移到了前台。
我添加了2/10秒延迟以允许输入多个字符。