public override SqlNode Clone() { return(new SelectStatement() { Distinct = Distinct, FromClause = FromClause?.Clone() as FromClause, GroupByClause = GroupByClause?.Clone() as GroupByClause, HavingClause = HavingClause?.Clone() as HavingClause, OffsetLimitClause = OffsetLimitClause?.Clone() as OffsetLimitClause, OrderByClause = OrderByClause?.Clone() as OrderByClause, SelectElements = SelectElements?.Select(x => x.Clone() as SelectExpression).ToList(), WhereClause = WhereClause?.Clone() as WhereClause }); }
// ------------------------------------------ // ACCESSORS // ------------------------------------------ #region Accessors /// <summary> /// Clones this instance. /// </summary> /// <returns>Returns the cloned instance.</returns> public override object Clone(params string[] areas) { var clone = base.Clone(areas) as DbSingleQuery; clone.Fields = Fields?.Select(p => p.Clone <DbField>()).ToList(); clone.UnionClauses = UnionClauses?.Select(p => p?.Clone <DbQueryUnionClause>()).ToList(); clone.FromClause = FromClause?.Clone <DbQueryFromClause>(); clone.WhereClause = WhereClause?.Clone <DbQueryWhereClause>(); clone.GroupByClause = GroupByClause?.Clone <DbQueryGroupByClause>(); clone.HavingClause = HavingClause?.Clone <DbQueryHavingClause>(); clone.OrderByClause = OrderByClause?.Clone <DbQueryOrderByClause>(); clone.ReturnedIdFields = ReturnedIdFields?.Select(p => p.Clone <DbField>()).ToList(); return(clone); }
public void TestCloneHavingClause() { HavingClause havingClause = new HavingClause() { Expression = new BooleanScalarExpression() { ScalarExpression = new ColumnReference() { Identifiers = new List <string>() { "c1" } } } }; var clone = havingClause.Clone() as HavingClause; Assert.AreEqual(havingClause, clone); Assert.IsFalse(ReferenceEquals(havingClause, clone)); Assert.IsFalse(ReferenceEquals(havingClause.Expression, clone.Expression)); }