1 using System.Linq.Expressions;
3 namespace System.Web.Util {
4 internal sealed class OrderingMethodFinder : ExpressionVisitor {
6 private bool isTopLevelMethodCall = true;
8 private bool OrderingMethodFound {
13 protected override Expression VisitMethodCall(MethodCallExpression node) {
14 if (isTopLevelMethodCall && QueryableUtility.IsOrderingMethod(node)) {
15 OrderingMethodFound = true;
18 isTopLevelMethodCall = false;
19 Expression result = base.VisitMethodCall(node);
20 isTopLevelMethodCall = true;
24 internal static bool OrderMethodExists(Expression expression) {
25 OrderingMethodFinder obj = new OrderingMethodFinder();
26 obj.OrderingMethodFound = false;
27 obj.Visit(expression);
28 return obj.OrderingMethodFound;