如何从 MethodCallExpression 访问 OrderBy 子句
How to access OrderBy clause from MethodCallExpression
我有一个处理 MethodCallExpression that has a OrderBy clause inside it. How can I get hold of the OrderBy 子句的自定义 LINQ 提供程序,以便我可以处理它?
我明白了,这是方法。
public class QueryContext<T>
{
void Execute(MethodCallExpression dsQueryExpression)
{
var orderByFinder = new OrderByFinder();
var orderByExpression = orderByFinder.GetOrderBy(dsQueryExpression);
// .. Continue on processing the OrderBy expression
}
}
internal class OrderByFinder : ExpressionVisitor
{
MethodCallExpression _orderByExpression;
public MethodCallExpression GetOrderBy(Expression expression)
{
Visit(expression);
return _orderByExpression;
}
protected override Expression VisitMethodCall(MethodCallExpression expression)
{
if (expression.Method.Name == "OrderBy") _orderByExpression = expression;
Visit(expression.Arguments[0]);
return expression;
}
}
我有一个处理 MethodCallExpression that has a OrderBy clause inside it. How can I get hold of the OrderBy 子句的自定义 LINQ 提供程序,以便我可以处理它?
我明白了,这是方法。
public class QueryContext<T>
{
void Execute(MethodCallExpression dsQueryExpression)
{
var orderByFinder = new OrderByFinder();
var orderByExpression = orderByFinder.GetOrderBy(dsQueryExpression);
// .. Continue on processing the OrderBy expression
}
}
internal class OrderByFinder : ExpressionVisitor
{
MethodCallExpression _orderByExpression;
public MethodCallExpression GetOrderBy(Expression expression)
{
Visit(expression);
return _orderByExpression;
}
protected override Expression VisitMethodCall(MethodCallExpression expression)
{
if (expression.Method.Name == "OrderBy") _orderByExpression = expression;
Visit(expression.Arguments[0]);
return expression;
}
}