7 votes

Vérifier si un IQueryable Linq a un ordre par appliqué

Existe-t-il un moyen de savoir si un objet IQueryable a un OrderBy appliqué dans son arbre d'expression ?

Le scénario que j'ai est qu'un contrôle de grille a une pagination activée, et un tri par colonne. Cependant, il n'y a pas de tri appliqué par défaut, donc dans ce cas Linq to SQL fait une sélection horriblement énorme pour le nombre de lignes, donc dans tous les scénarios je dois fournir un ordre par, cependant je ne devrais appliquer un ordre par défaut par clé primaire que si aucun autre ordre n'a été spécifié.

Est-ce possible ?

6voto

usr Points 74796

Vous pouvez le découvrir en inspectant l'arbre d'expression de la requête à l'aide d'une fonction personnalisée ExpressionVisitor ou tout autre mécanisme récursif de votre choix.

J'ai l'impression que votre code n'est pas bien conçu. Vous devriez probablement stocker le fait que l'ordre a été appliqué quelque part en tant que bool . Le flux d'informations de votre application a peut-être besoin d'être réorganisé.

Avec cette approche d'inspection, vous récupérez ces informations de manière détournée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X