コード例 #1
0
ファイル: QueryExecutor.cs プロジェクト: koralium/Koralium
        public ValueTask <IQueryable> Visit(ExecuteOffsetStage executeOffsetStage)
        {
            Debug.Assert(queryable != null);
            var offsetExecutor = _offsetExecutorFactory.GetOffsetExecutor(executeOffsetStage);

            return(offsetExecutor.Execute(queryable, executeOffsetStage));
        }
コード例 #2
0
 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);
 }
コード例 #3
0
ファイル: OffsetExecutor.cs プロジェクト: koralium/Koralium
 public async ValueTask <IQueryable> Execute(IQueryable queryable, ExecuteOffsetStage executeOffsetStage)
 {
     return(await ExecuteOffset((IQueryable <Entity>) queryable, executeOffsetStage));
 }
コード例 #4
0
ファイル: OffsetExecutor.cs プロジェクト: koralium/Koralium
 public abstract ValueTask <IQueryable <Entity> > ExecuteOffset(IQueryable <Entity> queryable, ExecuteOffsetStage executeOffsetStage);
コード例 #5
0
        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));
        }