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

            return(groupByExecutor.Execute(queryable, executeGroupByStage));
        }
コード例 #2
0
        public IGroupByExecutor GetGroupByExecutor(ExecuteGroupByStage groupByStage)
        {
            var t        = typeof(DefaultGroupByExecutor <,>).MakeGenericType(groupByStage.ValueType, groupByStage.KeyType);
            var executor = (IGroupByExecutor)Activator.CreateInstance(t);

            return(executor);
        }
コード例 #3
0
ファイル: GroupByExecutor.cs プロジェクト: koralium/Koralium
 protected Expression <Func <Entity, KeyType> > GetLambda(ExecuteGroupByStage groupByStage)
 {
     return(Expression.Lambda <Func <Entity, KeyType> >(groupByStage.Expression, groupByStage.ParameterExpression));
 }
コード例 #4
0
ファイル: GroupByExecutor.cs プロジェクト: koralium/Koralium
 public abstract ValueTask <IQueryable <IGrouping <KeyType, Entity> > > ExecuteGroupBy(IQueryable <Entity> queryable, ExecuteGroupByStage groupByStage);
コード例 #5
0
ファイル: GroupByExecutor.cs プロジェクト: koralium/Koralium
 public async ValueTask <IQueryable> Execute(IQueryable queryable, ExecuteGroupByStage groupByStage)
 {
     return(await ExecuteGroupBy((IQueryable <Entity>) queryable, groupByStage));
 }
コード例 #6
0
 public override ValueTask <IQueryable <IGrouping <KeyType, Entity> > > ExecuteGroupBy(IQueryable <Entity> queryable, ExecuteGroupByStage groupByStage)
 {
     return(new ValueTask <IQueryable <IGrouping <KeyType, Entity> > >(queryable.GroupBy(GetLambda(groupByStage))));
 }