public static string RenumberParameters(string sql, int totalArgumentCount)
{
var parameterNames = GetParameterNames(sql);
if (parameterNames.Count == 0)
{
return sql;
}
var argsAdded = 0;
var charIndex = 0;
var parameterPrefix = parameterNames[0].Substring(0, parameterNames[0].IndexOfAny(digits));
var predicateReWriter = new StringBuilder(sql, capacity: sql.Length + parameterNames.Count);
foreach (var parameterName in parameterNames.OrderByDescending(n => n, ParameterNameComparer.Instance))
{
charIndex = sql.Length;
var newParameterName = parameterPrefix + (totalArgumentCount - ++argsAdded).ToString(CultureInfo.InvariantCulture);
while ((charIndex = sql.LastIndexOf(parameterName, charIndex, StringComparison.Ordinal)) > -1)
{
predicateReWriter.Replace(parameterName, newParameterName, charIndex, parameterName.Length);
}
}
return predicateReWriter.ToString();
}