public override string ToString()
{
// Create a StringBuilder
StringBuilder Builder = new StringBuilder();
// Transpose is a special format used with &transpose=1
if (Transpose)
{
// Start off with header... for each row, we need a \tD
String D = "\tD";
Builder.Append("\nH" + D.Repeat(Rows.Count));
// Each header gets its own line, with data lines seperated by a tab
int i = 0;
foreach (string Header in Headers)
{
string Line = "\n" + Header;
foreach (List<string> Row in Rows)
Line = String.Concat(Line, "\t", Row[i]);
// Append header and data line
Builder.Append(Line);
i++;
}
return Builder.ToString();
}
else
{
// Add Headers
Builder.AppendFormat("\nH\t{0}", String.Join("\t", Headers));
// Add Data
foreach (List<string> Items in Rows)
Builder.AppendFormat("\nD\t{0}", String.Join("\t", Items));
// Return lines
return Builder.ToString();
}
}
/// <summary> /// Adds HeaderData to the current output /// </summary> /// <param name="Data"></param> public void WriteHeaderDataPair(Dictionary <string, object> Data) { if (Transpose) { if (Formatted != null) { ResponseBody.Append(Formatted.ToString()); } List <string> Params = new List <string>(Data.Count); foreach (KeyValuePair <string, object> Item in Data) { Params.Add(Item.Key); } Formatted = new FormattedOutput(Params); Formatted.Transpose = true; Params = new List <string>(Data.Count); foreach (KeyValuePair <string, object> Item in Data) { Params.Add(Item.Value.ToString()); } Formatted.AddRow(Params); } else { // Add Keys ResponseBody.Append("\nH"); foreach (KeyValuePair <string, object> Item in Data) { ResponseBody.Append("\t" + Item.Key); } // Add Data ResponseBody.Append("\nD"); foreach (KeyValuePair <string, object> Item in Data) { ResponseBody.Append("\t" + Item.Value); } } }