using System.Collections.Generic; using System.Linq.Expressions; namespace TradeUsedSale.Repositories.Utils { internal class ParameterRebinder : ExpressionVisitor { private readonly Dictionary _map; internal ParameterRebinder(Dictionary map) { _map = map ?? new Dictionary(); } internal static Expression ReplaceParameters(Dictionary map, Expression exp) { return new ParameterRebinder(map).Visit(exp); } protected override Expression VisitParameter(ParameterExpression p) { if (_map.TryGetValue(p, out var replacement)) { p = replacement; } return base.VisitParameter(p); } } }