private Clause <TEntity> CreateInternal(bool allowReturnAll = false) { if (!Clauses.Any() && allowReturnAll != true) { throw new Exception("No clauses specified, to retrieve all you need to set that it is enabled"); } Clause <TEntity> clause = null; foreach (var clauseData in Clauses) { if (clause == null) { clause = clauseData.Clause; } else { switch (clauseData.Operator) { case Operator.And: clause &= clauseData.Clause; break; case Operator.Or: clause |= clauseData.Clause; break; default: throw new Exception("Unknown operator used"); } } } return(clause); }
public TSpecification EndGroup() { if (!Clauses.Any()) { return(Parent); } var specification = CreateInternal(); if (specification != null) { Parent.Clause(specification); } else { switch (Parent.CurrentOperator) { case Operator.And: Parent.Clause(new TrueSpecification <TEntity>()); break; case Operator.Or: Parent.Clause(new FalseSpecification <TEntity>()); break; } } return(Parent); }
private void SetStatement(SqlStatement value) { if (!Clauses.Any()) { Clauses.Add(value); } if (Clauses[0] is SqlStatement) { Clauses[0] = value; } else { Clauses.Insert(0, value); } }