Ho una ObservableCollection, che contiene un oggetto Person
. Ho una funzione di ricerca nella mia applicazione e vorrei mostrare i risultati più rilevanti in alto. Quale sarebbe il modo più efficace per farlo? Il mio attuale metodo di ricerca chiama semplicemente il metodo contains
:Risultato ricerca Linq dalla corrispondenza più vicina
var results = (from s in userList
where s.Name.Contains(query)
select s).ToList();
Questo funziona bene, ma i risultati sono ordinati nello stesso ordine in cui appaiono all'interno userList
. Se cerco Pete
, dovrebbe prima visualizzare Pete
, quindi Peter
quindi Peter Smith
ecc. Non deve essere troppo complicato in quanto si tratta solo di un paio di migliaia (max) risultati. Il mio approccio ingenuo era di fare prima s.Name == query
, visualizzare quell'elemento (se presente), quindi eseguire lo s.Name.Contains(query)
, rimuovere l'elemento corrispondente e aggiungerlo al risultato corrispondente precedente. Tuttavia, questo sembra un po 'dappertutto e quindi c'è un modo migliore? grazie (ps - solo il nome verrà utilizzato nella ricerca e non è possibile utilizzare i metodi SQL)
Grazie, ho appena testato questo e sembra funzionare perfettamente. Bello e semplice :) – Brap