Tengo un ObservableCollection, que tiene un objeto Person
. Tengo una función de búsqueda en mi aplicación y me gustaría mostrar los resultados más relevantes en la parte superior. ¿Cuál sería la forma más eficiente de hacer esto? Mi método de búsqueda actual exige simplemente el método contains
:Resultado de búsqueda de Linq por coincidencia más cercana
var results = (from s in userList
where s.Name.Contains(query)
select s).ToList();
Esto funciona bien, pero los resultados se ordenan en el mismo orden en que aparecen en userList
. Si busco Pete
, primero debería mostrar Pete
, luego Peter
luego Peter Smith
etc. No tiene que ser demasiado complicado ya que solo tratará con un par de miles de resultados (máx.). Mi enfoque ingenuo fue primero hacer s.Name == query
, mostrar ese elemento (si lo hubiera), luego realizar el s.Name.Contains(query)
, eliminar el elemento coincidente y anexarlo al resultado coincidente anterior. Sin embargo, esto parece un poco por todas partes, ¿existe una mejor manera? gracias (ps - solo se usará el nombre en la búsqueda, y no puedo usar métodos SQL)
Gracias, acabo de probar esto y parece funcionar perfectamente. Agradable y simple :) – Brap