Beispiel #1
0
        protected override void OnCompile()
        {
            if (SyntaxNode.GroupByClause != null)
            {
                Select = SyntaxNode.GroupByClause.CreateGroupBySelector <TSource, TResult>(SyntaxNode.Columns.Aggregates);
            }

            else
            {
                Select = SyntaxNode.Columns.CreateSelector <TSource, TResult>();
            }

            // build up the source and result filters
            if (SyntaxNode.WhereClause != null)
            {
                SourceFilters.Add(list => list.Where(SyntaxNode.WhereClause.CreateEvaluator <TSource>()));
            }

            if (SyntaxNode.OrderByClause != null)
            {
                SourceFilters.Add(SyntaxNode.OrderByClause.CreateEvaluator <TSource>());
            }

            if (SyntaxNode.HavingClause != null)
            {
                ResultFilters.Add(list => list.Where(SyntaxNode.HavingClause.CreateEvaluator <TResult>()));
            }

            if (SyntaxNode.Columns.Distinct)
            {
                ResultFilters.Add(list => list.Distinct(CreateDistinctComparer()));
            }
        }
        public ResultFilterClause AddResultFilter(Type resultType, ResultFilterType resultFilterType, int selectorArgument)
        {
            var filter = new ResultFilterClause(resultType, resultFilterType, selectorArgument);

            ResultFilters.Add(filter);
            return(filter);
        }
Beispiel #3
0
 /// <summary>
 /// Adds the result filter.
 /// </summary>
 /// <param name="filter">The filter.</param>
 protected virtual void AddResultFilter(IResultFilter filter)
 {
     if (!ResultFilters.Contains(filter))
     {
         ResultFilters.Add(filter);
     }
 }
        private void AddFilter(Filter filter)
        {
            if (filter == null)
            {
                throw new ArgumentNullException(nameof(filter));
            }

            var instance = filter.Instance;

            if (instance is IAuthenticationFilter authentication)
            {
                AuthenticationFilters.Add(new FilterInfo <IAuthenticationFilter>
                {
                    Filter = authentication,
                    Scope  = filter.Scope,
                    Order  = filter.Order
                });
            }

            if (instance is IAuthorizationFilter authorization)
            {
                AuthorizationFilters.Add(new FilterInfo <IAuthorizationFilter>
                {
                    Filter = authorization,
                    Scope  = filter.Scope,
                    Order  = filter.Order
                });
            }

            if (instance is IActionFilter action)
            {
                ActionFilters.Add(new FilterInfo <IActionFilter>
                {
                    Filter = action,
                    Scope  = filter.Scope,
                    Order  = filter.Order
                });
            }

            if (instance is IResultFilter result)
            {
                ResultFilters.Add(new FilterInfo <IResultFilter>
                {
                    Filter = result,
                    Scope  = filter.Scope,
                    Order  = filter.Order
                });
            }

            if (instance is IExceptionFilter exception)
            {
                ExceptionFilters.Add(new FilterInfo <IExceptionFilter>
                {
                    Filter = exception,
                    Scope  = filter.Scope,
                    Order  = filter.Order
                });
            }
        }
        public ResultFilterClause ResetResultFilters(Type resultType, ResultFilterType resultFilterType, int selectorArgument)
        {
            ResultFilters.Clear();
            var resultFilterClause = new ResultFilterClause(resultType, resultFilterType, selectorArgument);

            ResultFilters.Add(resultFilterClause);
            return(resultFilterClause);
        }
        public ResultFilterClause AddTakeResultFilter(Type resultType, int takeCount)
        {
            var filter = new ResultFilterClause(resultType, ResultFilterType.Take, 0)
            {
                TakeCount = takeCount
            };

            ResultFilters.Add(filter);
            return(filter);
        }
        public ResultFilterClause AddSkipResultFilter(Type resultType, int skipCount)
        {
            var filter = new ResultFilterClause(resultType, ResultFilterType.Skip, 0)
            {
                SkipCount = skipCount
            };

            ResultFilters.Add(filter);
            return(filter);
        }
Beispiel #8
0
        protected override void OnCompile()
        {
            if (SyntaxNode.FromClause.Join == null)
            {
                throw new SqlException("The query does not contain a JOIN expression\n" + Sql);
            }

            _joinFunction = SyntaxNode.FromClause.Join.CreateJoinFunction <TSource, TInner>();

            if (SyntaxNode.GroupByClause != null)
            {
                _resultSelector = SyntaxNode.GroupByClause.CreateGroupBySelector <JoinResultSelector <TSource, TInner>, TResult>(SyntaxNode.Columns.Aggregates);
            }
            else
            {
                _resultSelector = SyntaxNode.Columns.CreateSelector <JoinResultSelector <TSource, TInner>, TResult>();
            }

            if (SyntaxNode.WhereClause != null)
            {
                _joinFilters.Add(list => list.Where(SyntaxNode.WhereClause.CreateEvaluator <JoinResultSelector <TSource, TInner> >()));
            }

            if (SyntaxNode.OrderByClause != null)
            {
                _joinFilters.Add(SyntaxNode.OrderByClause.CreateEvaluator <JoinResultSelector <TSource, TInner> >());
            }

            if (SyntaxNode.HavingClause != null)
            {
                ResultFilters.Add(list => list.Where(SyntaxNode.HavingClause.CreateEvaluator <TResult>()));
            }

            if (SyntaxNode.Columns.Distinct)
            {
                ResultFilters.Add(list => list.Distinct(CreateDistinctComparer()));
            }
        }