У меня есть ObservableCollection, в котором находится объект Person
. У меня есть функция поиска в моем приложении и вы хотите отобразить наиболее релевантные результаты в верхней части. Какой был бы самый эффективный способ сделать это? Мой текущий метод поиска просто вызывает contains
метода:Результаты поиска Linq по ближайшему совпадению
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-методы)
Спасибо, я просто испытал это и, похоже, работает отлично. Приятно и просто :) – Brap