e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
32 lines
959 B
C#
32 lines
959 B
C#
using System.Linq.Expressions;
|
|
|
|
namespace System.Web.Util {
|
|
internal sealed class OrderingMethodFinder : ExpressionVisitor {
|
|
|
|
private bool isTopLevelMethodCall = true;
|
|
|
|
private bool OrderingMethodFound {
|
|
get;
|
|
set;
|
|
}
|
|
|
|
protected override Expression VisitMethodCall(MethodCallExpression node) {
|
|
if (isTopLevelMethodCall && QueryableUtility.IsOrderingMethod(node)) {
|
|
OrderingMethodFound = true;
|
|
}
|
|
|
|
isTopLevelMethodCall = false;
|
|
Expression result = base.VisitMethodCall(node);
|
|
isTopLevelMethodCall = true;
|
|
return result;
|
|
}
|
|
|
|
internal static bool OrderMethodExists(Expression expression) {
|
|
OrderingMethodFinder obj = new OrderingMethodFinder();
|
|
obj.OrderingMethodFound = false;
|
|
obj.Visit(expression);
|
|
return obj.OrderingMethodFound;
|
|
}
|
|
}
|
|
}
|