Considérons la nécessité de rechercher une liste de clients par nom et prénom. Le souhait est que la liste des résultats soit triée par le client ayant le plus de correspondances dans les termes de recherche.LINQ OrderBy: meilleurs résultats de recherche en haut de la liste de résultats
FirstName LastName ---------- --------- Foo Laurie Bar Jackson Jackson Bro Laurie Foo Jackson Laurie
string[] searchTerms = new string[] {"Jackson", "Laurie"};
//want to find those customers with first, last or BOTH names in the searchTerms
var matchingCusts = Customers
.Where(m => searchTerms.Contains(m.FirstName)
|| searchTerms.Contains(m.LastName))
.ToList();
/* Want to sort for those results with BOTH FirstName and LastName
matching in the search terms. Those that match on both First and Last
should be at the top of the results, the rest who match on
one property should be below.
*/
return matchingCusts.OrderBy(m=>m);
désiré Trier:
Jackson Laurie (matches on both properties)
Foo Laurie
Bar Jackson
Jackson Bro
Laurie Foo
Comment puis-je obtenir cette fonctionnalité désirée avec LINQ et OrderBy
/OrderByDescending
?
Envisagez d'utiliser la recherche en texte intégral pour des choses comme ceci: http://msdn.microsoft .com/fr-us/library/ms142571.aspx –