Skip to content

Instantly share code, notes, and snippets.

@FelicePollano
Created December 17, 2011 13:21
Show Gist options
  • Select an option

  • Save FelicePollano/1490197 to your computer and use it in GitHub Desktop.

Select an option

Save FelicePollano/1490197 to your computer and use it in GitHub Desktop.
static class PredicateRewriter
{
public static Expression<Predicate<T>> Rewrite<T>(Expression<Predicate<T>> exp
, string newParamName)
{
var param = Expression.Parameter(exp.Parameters[0].Type, newParamName);
var newExpression = new PredicateRewriterVisitor(param).Visit(exp);
return (Expression<Predicate<T>>)newExpression;
}
private class PredicateRewriterVisitor : ExpressionVisitor
{
private readonly ParameterExpression _parameterExpression;
public PredicateRewriterVisitor(ParameterExpression parameterExpression)
{
_parameterExpression = parameterExpression;
}
protected override Expression VisitParameter(ParameterExpression node)
{
return _parameterExpression;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment