public ValueTask <IQueryable> Visit(ExecuteWhereStage executeWhereStage) { Debug.Assert(queryable != null); var whereExecutor = _whereExecutorFactory.GetWhereExecutor(executeWhereStage); return(whereExecutor.Execute(queryable, executeWhereStage)); }
public IWhereExecutor GetWhereExecutor(ExecuteWhereStage executeWhereStage) { if (!executors.TryGetValue(executeWhereStage.EntityType, out var executor)) { var t = typeof(DefaultWhereExecutor <>).MakeGenericType(executeWhereStage.EntityType); executor = (IWhereExecutor)Activator.CreateInstance(t); executors.Add(executeWhereStage.EntityType, executor); } return(executor); }
protected Expression <Func <Entity, bool> > GetLambda(ExecuteWhereStage whereStage) { return(Expression.Lambda <Func <Entity, bool> >(whereStage.Expression, whereStage.ParameterExpression)); }
public abstract ValueTask <IQueryable <Entity> > ExecuteWhere(IQueryable <Entity> queryable, ExecuteWhereStage whereStage);
public async ValueTask <IQueryable> Execute(IQueryable queryable, ExecuteWhereStage executeWhereStage) { return(await ExecuteWhere((IQueryable <Entity>) queryable, executeWhereStage)); }
public override ValueTask <IQueryable <Entity> > ExecuteWhere(IQueryable <Entity> queryable, ExecuteWhereStage whereStage) { return(new ValueTask <IQueryable <Entity> >(queryable.Where(GetLambda(whereStage)))); }