Linq IQueryable에 적용된 주문이 있는지 확인

c# expression-trees linq

문제

IQueryable 객체가 해당 표현 트리 내에서 OrderBy를 적용했는지 알아낼 방법이 있습니까?

내가 가진 시나리오는 그리드 컨트롤이 페이징을 가능하게하고 컬럼별로 정렬한다는 것입니다. 그러나 기본적으로 정렬이 적용되지 않으므로이 경우 Linq는 행 수를 엄청나게 엄선합니다. 따라서 모든 시나리오에서 주문을 제공해야하지만 기본 키로 기본 순서 만 적용해야합니다 다른 순서가 지정되어 있지 않은 경우.

이것이 가능한가?

수락 된 답변

사용자 정의 ExpressionVisitor 또는 임의의 재귀 적 탐색 메커니즘을 사용하여 쿼리의 표현식 트리를 검사하여 확인할 수 있습니다.

나는 당신의 코드가 잘 설계되지 않았다는 것을 느낀다. 아마도 순서가 bool 로 어딘가에 적용되었다는 사실을 저장해야 할 것입니다. 어쩌면 앱의 정보 흐름을 재구성해야 할 수도 있습니다.

이 검사 방법을 사용하면이 정보를 해킹으로 복구 할 수 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.