我有一个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)
,删除匹配项,并将其附加到之前匹配的结果。然而,这似乎有点混乱,是否有更好的方法?谢谢
(注:仅使用名称进行搜索,不能使用SQL方法)