J'ai une requête où je dois avoir Ordonneby basé sur un paramètre QueryString .Pour exemple si le paramètre Sortby est le prix, la requête doit changer avec le prix. Si sa note que changer la requête pour trier par note. P>
Je sais que le prédicatbuilder peut faire et que des trucs mais comment puis-je faire une requête dynamique Ordoneby Linq. P>
3 Réponses :
Eh bien, vous pouvez utiliser une instruction de commutation ou quelque chose de similaire:
IQueryable<Foo> query = ...; switch (orderByParameter) { case "price": query = query.OrderBy(x => x.Price); break; case "rating": query = query.OrderBy(x => x.Rating); break; // etc }
Si vous savez exactement quels sont tous les paramètres possibles pouvant être utilisés pour commander, la réponse JONÂ est la meilleure. Mais si vous avez un nombre inconnu de paramètres, vous pouvez construire l'expression de manière dynamique. E.g:
Développer sur @lontitivero Réponse.
Si vous souhaitez faire le tri dynamique de plusieurs articles ascendants et descendants, vous pouvez faire quelque chose de similaire à celui-ci ci-dessous. Ajoute les méthodes de la commandebydescending, puis debydescendants p>
Dupliqué possible de Dynamic Linq Orderby