У меня есть ObservableCollection, которая содержит объект Person
. В моем приложении есть функция поиска, и я хотел бы отображать наиболее релевантные результаты вверху. Что было бы наиболее эффективным способом сделать это? Мой текущий метод поиска просто вызывает метод содержит
:
var results = (from s in userList
where s.Name.Contains(query)
select s).ToList();
Он работает нормально, но результаты упорядочены в том же порядке, что и в userList
. Если я ищу Пит
, то сначала должно отображаться Пит
, затем Питер
, затем Питер Смит
и т. Д. Что было бы наиболее эффективным способом сделать это? Мой текущий метод поиска просто вызывает метод содержит
:
var results = (from s in userList
where s.Name.Contains(query)
select s).ToList();
Он работает нормально, но результаты упорядочены в том же порядке, что и в userList
. Если я ищу Пит
, то сначала должно отображаться Пит
, затем Питер
, затем Питер Смит
и т. Д. Что было бы наиболее эффективным способом сделать это? Мой текущий метод поиска просто вызывает метод содержит
:
var results = (from s in userList
where s.Name.Contains(query)
select s).ToList();
Он работает нормально, но результаты упорядочены в том же порядке, что и в userList
. Если я ищу Пит
, то сначала должно отображаться Пит
, затем Питер
, затем Питер Смит
и т. Д.
Он не должен быть слишком сложным, так как он будет иметь дело только с парой тысяч (максимум) результатов. Мой наивный подход заключался в том, чтобы сначала выполнить s.Name == query
, отобразить этот элемент (если есть), затем выполнить s.Name.Contains (query)
, удалить совпавший элемент и добавьте его к предыдущему совпавшему результату. Однако это кажется повсеместным, и есть ли лучший способ? Спасибо
(ps - при поиске будет использоваться только имя, и я не могу использовать методы SQL)