public SqlHelper GenerateSql(SqlHelper sql) { foreach (var c in CriteriaStack) { if (c.GetType() == typeof(OpenGroup)) { sql.OpenParenthesis(); } if (c.GetType() == typeof(CloseGroup)) { sql.CloseParenthesis(); } if (c.GetType() == typeof(And)) { sql.AND(); } if (c.GetType() == typeof(Or)) { sql.OR(); } if (c.GetType() == typeof(FieldCriteria)) { ((FieldCriteria) c).GenerateSql(sql); } if (c.GetType() == typeof(Literal)) { sql.Add(((Literal)c).SQL); } } return sql; }