Vérifiez si une commande a été appliquée à Linq IQueryable

c# expression-trees linq

Question

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 activé la pagination et le tri par colonne. Cependant, aucune sorte n'est appliquée par défaut, donc dans ce cas, Linq to SQL effectue une sélection horriblement énorme pour le nombre de lignes. Ainsi, dans tous les scénarios, je dois fournir un ordre. Toutefois, je ne devrais appliquer qu'un ordre par clé primaire si aucun autre ordre n'a été spécifié.

Alors est-ce possible?

Réponse acceptée

Vous pouvez le savoir en consultant l’arborescence des expressions de la requête à l’aide d’un ExpressionVisitor personnalisé ou de tout mécanisme de parcours récursif de votre choix.

Je sens que votre code n'est pas bien conçu. Vous devriez probablement simplement garder en mémoire le fait que la commande a été appliquée quelque part comme un bool . Peut-être que le flux d'informations de votre application doit être ré-archivé.

Avec cette approche d’inspection, vous récupérez ces informations de manière sournoise.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi