0

我有一个列表框,其中每个类至少有 1000 个项目说“数据”,它有一个“名称”属性。我在列表框上方还有一个文本框,用于根据您的输入文本过滤列表框中的项目。如何快速查找列表框中的项目。

我尝试做这样的事情:在 textBox_textChanged 事件中,我获取文本,并使用 CollectionViewSource 类过滤掉项目,但这会导致用户界面非常生涩。(我通过在我的 Data 类上获取 Name 属性并执行 string.Contains() 调用来过滤掉项目)

有没有加快搜索速度的方法?谢谢。

4

1 回答 1

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 秒的延迟以允许输入多个字符。

于 2012-07-20T12:52:28.173 回答