Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }