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)); }
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); }
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(); }
/// <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; }