Exemple #1
0
        // <summary>
        // Creates a new query instance using the given LINQ expresion.
        // The current query is used to produce the context for the new query, but none of its logic
        // is used.
        // </summary>
        // <param name="expression"> Expression forming the query. </param>
        // <returns> ObjectQuery instance implementing the given expression. </returns>
        IQueryable IQueryProvider.CreateQuery(Expression expression)
        {
            Check.NotNull(expression, "expression");

            if (!typeof(IQueryable).IsAssignableFrom(expression.Type))
            {
                throw new ArgumentException(Strings.ELinq_ExpressionMustBeIQueryable, "expression");
            }

            // Determine the type of the query instance by binding generic parameter in Query<>.Queryable
            // (based on element type of expression)
            var elementType = TypeSystem.GetElementType(expression.Type);

            return(CreateQuery(expression, elementType));
        }