using System.Linq.Expressions; namespace DD.Persistence.Database.Helpers; public class ParameterReplacerVisitor : ExpressionVisitor { private readonly Expression _newExpression; private readonly ParameterExpression _oldParameter; private ParameterReplacerVisitor(ParameterExpression oldParameter, Expression newExpression) { _oldParameter = oldParameter; _newExpression = newExpression; } internal static Expression Replace(Expression expression, ParameterExpression oldParameter, Expression newExpression) => new ParameterReplacerVisitor(oldParameter, newExpression).Visit(expression); protected override Expression VisitParameter(ParameterExpression p) => p == _oldParameter ? _newExpression : p; }