public ValueTask <IQueryable> Visit(ExecuteOffsetStage executeOffsetStage) { Debug.Assert(queryable != null); var offsetExecutor = _offsetExecutorFactory.GetOffsetExecutor(executeOffsetStage); return(offsetExecutor.Execute(queryable, executeOffsetStage)); }
public IOffsetExecutor GetOffsetExecutor(ExecuteOffsetStage executeOffsetStage) { if (!executors.TryGetValue(executeOffsetStage.Type, out var executor)) { var t = typeof(DefaultOffsetExecutor <>).MakeGenericType(executeOffsetStage.Type); executor = (IOffsetExecutor)Activator.CreateInstance(t); executors.Add(executeOffsetStage.Type, executor); } return(executor); }
public async ValueTask <IQueryable> Execute(IQueryable queryable, ExecuteOffsetStage executeOffsetStage) { return(await ExecuteOffset((IQueryable <Entity>) queryable, executeOffsetStage)); }
public abstract ValueTask <IQueryable <Entity> > ExecuteOffset(IQueryable <Entity> queryable, ExecuteOffsetStage executeOffsetStage);
public override ValueTask <IQueryable <Entity> > ExecuteOffset(IQueryable <Entity> queryable, ExecuteOffsetStage executeOffsetStage) { if (executeOffsetStage.Skip != null) { queryable = queryable.Skip(executeOffsetStage.Skip.Value); } if (executeOffsetStage.Take != null) { queryable = queryable.Take(executeOffsetStage.Take.Value); } return(new ValueTask <IQueryable <Entity> >(queryable)); }