/// <summary> /// Add a Where clause to a query; may need to create a new query. /// </summary> /// <param name="whereClause">Clause to add.</param> /// <param name="elementType">Type of element in input collection.</param> /// <param name="inScope">Set of parameter names in scope.</param> /// <returns>A new query containing the specified Where clause.</returns> public QueryUnderConstruction AddWhereClause(SqlWhereClause whereClause, Type elementType, HashSet <ParameterExpression> inScope) { QueryUnderConstruction.ValidateNonSubquerySupport(this); QueryUnderConstruction result = this; if (this.selectClause != null) { result = this.PackageQuery(inScope); } whereClause = QueryUnderConstruction.CombineWithConjunction(result.whereClause, whereClause); result.whereClause = whereClause; return(result); }
public QueryUnderConstruction AddOrderByClause(SqlOrderbyClause orderBy, HashSet <ParameterExpression> inScope) { QueryUnderConstruction.ValidateNonSubquerySupport(this); QueryUnderConstruction result = this; if (this.selectClause != null) { result = this.PackageQuery(inScope); } if (result.orderByClause != null) { throw new DocumentQueryException("Multiple OrderBy is not supported."); } result.orderByClause = orderBy; return(result); }
/// <summary> /// Add a Select clause to a query; may need to create a new subquery. /// </summary> /// <param name="select">Select clause to add.</param> /// <param name="inputElementType">Type of element in the input collection.</param> /// <param name="outputElementType">Type of element in output collection.</param> /// <param name="inScope">Set of parameter names in scope.</param> /// <returns>A new query containing a select clause.</returns> public QueryUnderConstruction AddSelectClause(SqlSelectClause select, Type inputElementType, Type outputElementType, HashSet <ParameterExpression> inScope) { if (select.HasDistinct) { QueryUnderConstruction.ValidateNonSubquerySupport(this); } QueryUnderConstruction result = this; if (this.selectClause != null) { result = this.PackageQuery(inScope); } if (result.selectClause != null) { throw new DocumentQueryException("Internal error: attempting to overwrite SELECT clause"); } result.selectClause = select; return(result); }