internal MdxSelectStatement GenerateCurrentStatement(MdxQueryContext MdxQueryContext) { var newAxes = Axes; for (int i = 0; i < Axes.Count; i++) { var axis = Axes[i]; var cntAxis = MdxQueryContext.Axes[i]; var newAxis = axis.GenerateCurrentAxis(cntAxis); if (!object.ReferenceEquals(axis, newAxis)) { if (newAxes == Axes) { newAxes = (MdxObjectList <MdxAxis>)Axes.Clone(); } newAxes[i] = newAxis; } } if (newAxes == Axes) { return(this); } var result = new MdxSelectStatement(With, newAxes, Where, CubeSpecification); return(result); }
public override object Clone() { MdxPropertyExpression clone = null; if (this.Object == null) { clone = new MdxPropertyExpression(null, this.Name); } else { clone = new MdxPropertyExpression( (MdxExpression)this.Object.Clone(), this.Name); } if (IsFunction) { clone.Args.AddRange((IEnumerable <MdxExpression>)Args.Clone()); clone.IsFunction = true; } return(clone); }