protected string ResolveParamPlaceholders(string input, string prefix, string suffix, ParamSet paramSet, IDbCommand cmd) { string output = string.Empty; Regex reg = new Regex(@"\$P(\{|\<)[0-9A-Z_a-z]+(\}|\>)"); MatchCollection matches = reg.Matches(input); int cursor = 0; foreach (Match m in matches) { string paramName = m.Value.Substring(3, m.Value.Length - 4); //cutting $P{ and } string physicParamName = prefix + paramName + suffix; output += input.Substring(cursor, m.Index - cursor); output += physicParamName; cursor = m.Index + m.Length; IDbDataParameter param = cmd.CreateParameter(); ParamSet.ParamInfo pi = paramSet.GetInfo(paramName); param.ParameterName = physicParamName; param.DbType = pi.DbType; param.Value = pi.Value; param.Direction = pi.Direction; cmd.Parameters.Add(param); } if (cursor < input.Length) { output += input.Substring(cursor); } return(output); }