【发布时间】:2011-04-24 23:05:24
【问题描述】:
我有一个 ObservableCollection,它包含一个 Person 对象。我的应用程序中有一个搜索功能,并希望在顶部显示最相关的结果。这样做最有效的方法是什么?我当前的搜索方法只是调用contains 方法:
var results = (from s in userList
where s.Name.Contains(query)
select s).ToList();
这很好用,但结果的排序顺序与它们在userList 中出现的顺序相同。如果我搜索Pete,那么它应该首先显示Pete,然后是Peter,然后是Peter Smith等等。
它不必太复杂,因为它只会处理几千个(最大)结果。我天真的方法是首先执行s.Name == query,显示该项目(如果有),然后执行s.Name.Contains(query),删除匹配的项目并将其附加到之前的匹配结果中。但是,这似乎有点到处都是,所以有更好的方法吗?谢谢
(ps - 搜索时只会使用名称,不能使用SQL方法)
【问题讨论】:
标签: c# linq search windows-phone-7 observablecollection