Mam ObservableCollection, która zawiera obiekt Person
. Mam funkcję wyszukiwania w mojej aplikacji i chciałbym wyświetlić najbardziej odpowiednie wyniki na górze. Jaki byłby najskuteczniejszy sposób na zrobienie tego? Moja obecna metoda wyszukiwania po prostu wywołuje metodę contains
:Wyniki wyszukiwania Linq według najbliższego dopasowania
var results = (from s in userList
where s.Name.Contains(query)
select s).ToList();
Działa to dobrze, ale wyniki są zamówione w tej samej kolejności, w jakiej pojawiają się w ciągu userList
. Jeśli wyszukuję numer Pete
, powinien on najpierw wyświetlić Pete
, następnie Peter
, następnie Peter Smith
itd. Nie musi być zbyt skomplikowany, ponieważ będzie miał do czynienia tylko z kilkoma tysiącami (maks.) Wyników. Moje naiwne podejście polegało najpierw na wykonaniu s.Name == query
, wyświetleniu tego elementu (jeśli istnieje), a następnie wykonaniu s.Name.Contains(query)
, usunięciu dopasowanego przedmiotu i dołączeniu go do poprzedniego dopasowanego wyniku. Jednak wydaje się to trochę wszędzie, a więc jest lepszy sposób? dzięki (ps - w wyszukiwaniu będzie używana tylko nazwa i nie będę mógł korzystać z metod SQL)
Dzięki, właśnie to przetestowałem i wygląda na to, że działa idealnie. Miło i prosto :) – Brap