private static IEnumerable<DbParameter> createParameters(DbCommand cmd, string commandText, params object[] paramValues)
{
if (string.IsNullOrEmpty(commandText)) return null;
if (paramValues == null || paramValues.Length == 0) return null;
var coll = new List<DbParameter>();
var idx = commandText.IndexOf("@", StringComparison.CurrentCultureIgnoreCase);
if (idx == -1)
return null;
var parmString = commandText.Substring(idx);
parmString = parmString.Replace(",", " ,");
var mc = RegEx.Matches(parmString);
var matchesList = removeDuplicates(mc);
if (matchesList.Count != paramValues.Length)
throw new ArgumentOutOfRangeException("paramValues");
for (var i = 0; i < matchesList.Count; i++)
{
DbParameter parm = cmd.CreateParameter();
parm.ParameterName = matchesList[i];
parm.Value = paramValues[i] ?? DBNull.Value;
coll.Add(parm);
}
return coll;
}