protected string CompileJoins(QueryBuilder query, IList <JoinClause> joins) { IList <string> sql = new List <string>(); foreach (JoinClause join in joins) { string table = WrapTable(join.Table); IList <string> clauses = new List <string>(); foreach (ClauseInJoin clause in join.Clauses) { clauses.Add(CompileJoinConstraint(clause)); } foreach (string binding in join.Bindings) { query.AddBinding(BindingType.Join, binding); } clauses[0] = clauses[0].PregReplace("and |or ", "", 1); string clausesSql = String.Join(" ", clauses); sql.Add(join.Type.ToString().AddSpacesToSentence(false).ToLower() + " join " + table + " on " + clausesSql); } return(String.Join(" ", sql)); }