Compruebe si un Linq IQueryable tiene un pedido por aplicado

c# expression-trees linq

Pregunta

¿Hay alguna manera de averiguar si un objeto IQueryable tiene un OrderBy aplicado dentro de su árbol de expresión?

El escenario que tengo es que un control de cuadrícula tiene habilitada la paginación y la clasificación por columna. Sin embargo, no hay una clasificación aplicada de forma predeterminada, por lo que en este caso Linq to SQL realiza una selección horriblemente grande para el recuento de filas, por lo que en todos los escenarios debo proporcionar un pedido, sin embargo, solo debo aplicar un orden predeterminado por clave principal Si no se ha especificado otro orden.

Entonces, ¿es esto posible?

Respuesta aceptada

Puede averiguarlo inspeccionando el árbol de expresiones de la consulta utilizando un ExpressionVisitor personalizado o cualquier mecanismo de recorrido recursivo de su elección.

Siento que tu código no está bien diseñado. Probablemente debería almacenar ese hecho de que el pedido se ha aplicado en algún lugar como un bool . Tal vez el flujo de información de su aplicación deba ser revisado.

Con este enfoque de inspección, usted está recuperando esta información de una manera imprudente.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué