MicroLite.SqlUtility.RenumberParameters C# (CSharp) Method

RenumberParameters() public static method

Re-numbers the parameters in the SQL based upon the total number of arguments.
public static RenumberParameters ( string sql, int totalArgumentCount ) : string
sql string The SQL.
totalArgumentCount int The total number of arguments.
return string
        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();
        }