void IComponent.Append(ref Dictionary<string, object> variables, IOutputWriter writer) { ClassQuery cq = new ClassQuery(_namespace, _query); List<IDbDataParameter> pars = new List<IDbDataParameter>(); StringOutputWriter swo = new StringOutputWriter(); foreach (string str in _parameters.Keys) { string par = ""; foreach (IComponent ic in _parameters[str]) { swo.Clear(); ic.Append(ref variables, swo); par += swo.ToString(); } pars.Add(cq.CreateParameter(str, par)); } cq.Execute(pars.ToArray()); object var = new ArrayList(); while (cq.Read()) { Hashtable ht = new Hashtable(); for (int x = 0; x < cq.FieldCount; x++) { if (!cq.IsDBNull(x)) { ht.Add(cq.GetName(x), cq[x]); } } ((ArrayList)var).Add(ht); } cq.Close(); if (((ArrayList)var).Count == 1 && ((Hashtable)((ArrayList)var)[0]).Count == 1) { Hashtable tmp = (Hashtable)((ArrayList)var)[0]; var = tmp; object[] objAr = new object[1]; ((Hashtable)var).Values.CopyTo(objAr, 0); var = objAr[0]; } if (variables.ContainsKey(_variableName)) variables.Remove(_variableName); variables.Add(_variableName, var); }