public static WhereStatement Copy(WhereStatement statement) { var result = new WhereStatement(); int currentLevel = 0; foreach (var level in statement) { currentLevel++; result.Add(new List <WhereClause>()); foreach (WhereClause clause in statement[currentLevel - 1]) { var clauseCopy = new WhereClause(clause.FieldName, clause.ComparisonOperator, clause.Value); foreach (SubClause subClause in clause.SubClauses) { var subClauseCopy = new SubClause(subClause.LogicOperator, subClause.ComparisonOperator, subClause.Value); clauseCopy.SubClauses.Add(subClauseCopy); } result[currentLevel - 1].Add(clauseCopy); } } return(result); }
public void AddClause(LogicOperator logic, Comparison compareOperator, object compareValue) { SubClause newSubClause = new SubClause(logic, compareOperator, compareValue); SubClauses.Add(newSubClause); }