public void breakDownString(string nasty, kParse parseAs) { string part = string.Empty; int pos = 0; int bracecount = 0; while (pos < nasty.Length) { if (nasty[pos] == '(') { bracecount++; } if (nasty[pos] == ')') { bracecount--; } if (nasty[pos] == ',' && bracecount == 0) { switch (parseAs) { case kParse.kSelect: { string participle = string.Empty; string astext = string.Empty; if (breakAs(part, ref participle, ref astext)) { SelectList.Add(participle.Trim()); AsList.Add(astext.Trim()); } else { part = part.Trim(); if (part.Length > 0) { SelectList.Add(part.Trim()); AsList.Add(string.Empty); } } } break; case kParse.kFrom: { FromList.Add(part.Trim()); } break; case kParse.kOrderby: { OrderbyList.Add(part.Trim()); } break; } part = string.Empty; pos++; } else { part += nasty[pos].ToString(); pos++; if (pos == nasty.Length) { switch (parseAs) { case kParse.kSelect: { string participle = string.Empty; string astext = string.Empty; if (breakAs(part, ref participle, ref astext)) { SelectList.Add(participle.Trim()); AsList.Add(astext.Trim()); } else { part = part.Trim(); if (part.Length > 0) { SelectList.Add(part.Trim()); AsList.Add(string.Empty); } } } break; case kParse.kFrom: FromList.Add(part.Trim()); break; case kParse.kOrderby: OrderbyList.Add(part.Trim()); break; } } } } }