/// <summary> /// 重建参数集合 /// </summary> /// <param name="lstPrm"></param> /// <returns></returns> public virtual ParamList RebuildParamList(ref string sql, ParamList lstPrm) { ParamList lstRet = new ParamList(); StringBuilder newSql = new StringBuilder(); Dictionary <string, DBParameter> dicPrm = new Dictionary <string, DBParameter>(); foreach (DBParameter prm in lstPrm) { dicPrm[prm.ParameterName] = prm; } Queue <RebuildParamInfo> queStrPrm = FindAllParams(sql); DBParameter curPrm = null; RebuildParamInfo curprmInfo = null; if (queStrPrm.Count > 0) { curprmInfo = queStrPrm.Dequeue(); } for (int i = 0; i < sql.Length; i++) { if (curprmInfo != null && curprmInfo.Index == i) { if (dicPrm.TryGetValue(curprmInfo.ParamName, out curPrm)) { string pName = "P" + lstRet.Count; DBParameter newPrm = lstRet.AddNew(FormatParamKeyName(pName), curPrm.DbType, curPrm.Value, curPrm.Direction); newPrm.ValueName = FormatValueName(pName); newSql.Append(newPrm.ValueName); i += curprmInfo.ParamName.Length - 1; if (queStrPrm.Count > 0) { curprmInfo = queStrPrm.Dequeue(); } continue; } } newSql.Append(sql[i]); } sql = newSql.ToString(); return(lstRet); }