コード例 #1
0
        private static IQueryable <T1> BuildQuery <T1, T2>(IQueryable <T1> queriable1, IQueryable <T2> queriable2)
            where T1 : IValue
            where T2 : IValue
        {
            Expression <Func <T2, bool> > subfilter =
                x => x.Value % 2 == 0;

            Expression <Func <T1, bool> > outerfilter =
                x => queriable2.Where(subfilter).Where(d => d.Value == x.Value).Any();

            return(queriable1.Where(outerfilter));
        }
コード例 #2
0
        protected When_using_IfElseExpressions(Func <RemoteExpression, RemoteExpression> serialize)
        {
            var expression = Expression.IfThenElse(
                Expression.MakeBinary(ExpressionType.LessThan, Expression.Constant(5), Expression.Constant(2)),
                Expression.Throw(Expression.New(typeof(Exception).GetConstructor(new[] { typeof(string) }), Expression.Constant("The condition is true."))),
                Expression.Throw(Expression.New(typeof(Exception).GetConstructor(new[] { typeof(string) }), Expression.Constant("The condition is false."))));

            _originalExpression = expression;

            _remoteExpression = expression.ToRemoteLinqExpression();

            _serializedRemoteExpression = serialize(_remoteExpression);
        }
コード例 #3
0
                public QueryExecutor(
                    PreparedQuery preparedQuery,
                    QueryContext queryContext,
                    IReadOnlyDictionary <string, IEntityType> entityTypeMap)
                {
                    this.queryContext       = queryContext;
                    this.createResultMapper = () => new InfoCarrierQueryResultMapper(queryContext, preparedQuery.TypeResolver, preparedQuery.TypeInfoProvider, entityTypeMap);
                    this.infoCarrierClient  = ((InfoCarrierQueryContext)queryContext).InfoCarrierClient;

                    // Substitute query parameters
                    Expression expression = new SubstituteParametersExpressionVisitor(queryContext).Visit(preparedQuery.Expression);

                    // UGLY: this resembles Remote.Linq.DynamicQuery.RemoteQueryProvider<>.TranslateExpression()
                    this.rlinq = expression
                                 .ToRemoteLinqExpression(preparedQuery.TypeInfoProvider, Remote.Linq.EntityFrameworkCore.ExpressionEvaluator.CanBeEvaluated)
                                 .ReplaceQueryableByResourceDescriptors(preparedQuery.TypeInfoProvider)
                                 .ReplaceGenericQueryArgumentsByNonGenericArguments();
                }
コード例 #4
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="QueryDataRequest"/> class.
 /// </summary>
 /// <param name="query">The Remote.Linq query expression.</param>
 /// <param name="trackingBehavior">The <see cref="QueryTrackingBehavior" /> of the client-side <see cref="DbContext" />.</param>
 internal QueryDataRequest(RLinq query, QueryTrackingBehavior trackingBehavior)
 {
     this.Query            = query;
     this.TrackingBehavior = trackingBehavior;
 }