/// <summary> /// Build a Where conditional for select query /// </summary> /// <param name="pParams">List of parameters</param> /// <returns>A string's format ([par1]=valu) AND ([par1] = value) </returns> protected String BuildWhere(params RecordParameter[] pParams) { String Where = String.Empty; if (pParams != null) { int pIndex = 0; foreach (RecordParameter param in pParams) { if (param.OwnerParameter.ParameterName != String.Format("p{0}", pIndex)) { param.ParameterField = param.ParameterName.Clone() as String; param.ParameterName = String.Format("p{0}", pIndex); param.OwnerParameter.ParameterName = String.Format("p{0}", pIndex); } if (!String.IsNullOrEmpty(Where)) { Where += " AND "; } Where += CompareKindToString.SignWithFormat(RecordConnection, param, param.CompareKindExpression); pIndex++; } } return(Where); }
/// <summary> /// Compose a String Where result with list of parameters /// </summary> /// <param name="conditionType">Condition Type</param> /// <param name="childs">Parameters</param> /// <param name="startupIndexParameter">Index current parameters</param> /// <param name="listParameters">List output of parameters</param> /// <returns>String Format Where condition</returns> protected String ComposeParametersFormat(ConditionType conditionType, List <RecordParameter> childs, ref int startupIndexParameter, List <RecordParameter> listParameters) { String result = String.Empty; String composeFormat = String.Empty; String Operation = conditionType == ConditionType.And ? "AND" : "OR"; List <String> cs = new List <string>(); for (int i = 0; i < childParameters.Count; i++) { if (childParameters[i].OwnerParameter.ParameterName != String.Format("p{0}", startupIndexParameter)) { childParameters[i].ParameterField = childParameters[i].ParameterName.Clone() as String; childParameters[i].ParameterName = String.Format("p{0}", startupIndexParameter); childParameters[i].OwnerParameter.ParameterName = String.Format("p{0}", startupIndexParameter); } String singlePar = CompareKindToString.SignWithFormat(childParameters[i], childParameters[i].CompareKindExpression); composeFormat += " " + Operation + " {" + i + "}"; cs.Add(singlePar); startupIndexParameter++; if (CompareKindToString.IsSignWithAddingParameter(childParameters[i].CompareKindExpression)) { listParameters.Add(childParameters[i]); } } if (conditionType == ConditionType.Or) { result = String.Format(composeFormat.Substring(4), cs.ToArray()); } if (conditionType == ConditionType.And) { result = String.Format(composeFormat.Substring(5), cs.ToArray()); } return(result); }