public void CanGenerateExpressionWithNullSortDescription()
        {
            var param = Expression.Parameter(typeof(IQueryable<ClassA>), "q");
            var expr = new SortVisitor<ClassA>().Visit(param, null);

            Assert.AreEqual("q", expr.ToString());
        }
        public ElasticQueryParserConfiguration AddVisitorAfter <T>(IChainableQueryVisitor visitor)
        {
            QueryVisitor.AddVisitorAfter <T>(visitor);
            AggregationVisitor.AddVisitorAfter <T>(visitor);
            SortVisitor.AddVisitorAfter <T>(visitor);

            return(this);
        }
        public ElasticQueryParserConfiguration ReplaceVisitor <T>(IChainableQueryVisitor visitor, int?newPriority = null) where T : IChainableQueryVisitor
        {
            QueryVisitor.ReplaceVisitor <T>(visitor, newPriority);
            AggregationVisitor.ReplaceVisitor <T>(visitor, newPriority);
            SortVisitor.ReplaceVisitor <T>(visitor, newPriority);

            return(this);
        }
        public ElasticQueryParserConfiguration RemoveVisitor <T>() where T : IChainableQueryVisitor
        {
            QueryVisitor.RemoveVisitor <T>();
            AggregationVisitor.RemoveVisitor <T>();
            SortVisitor.RemoveVisitor <T>();

            return(this);
        }
        public ElasticQueryParserConfiguration AddVisitor(IChainableQueryVisitor visitor, int priority = 0)
        {
            QueryVisitor.AddVisitor(visitor, priority);
            AggregationVisitor.AddVisitor(visitor, priority);
            SortVisitor.AddVisitor(visitor, priority);

            return(this);
        }
        public void CanSortBySingleAttributeDescending()
        {
            var sort = Helper.Sort("PropB.PropDateTimeNullable", ListSortDirection.Descending);

            var param = Expression.Parameter(typeof(IQueryable<ClassA>), "q");
            var expr = new SortVisitor<ClassA>().Visit(param, sort);

            Assert.AreEqual("q.OrderByDescending(x => x.PropB.PropDateTimeNullable)", expr.ToString());
        }
Пример #7
0
    public Func <T[], T[]> Build <T>(IValueNode Sort)
    {
        var visitorContext = new QueryableSortContext(_inputType, true);
        var visitor        = new SortVisitor <QueryableSortContext, QueryableSortOperation>();

        visitor.Visit(Sort, visitorContext);

        Assert.Empty(visitorContext.Errors);

        return(elements => visitorContext.Sort(elements.AsQueryable()).ToArray());
    }
        public void CanSortByTwoAttributesAllAscending()
        {
            var sort = Helper.Sorts(
                Helper.Sort("PropInt", ListSortDirection.Ascending),
                Helper.Sort("PropString", ListSortDirection.Ascending));

            var param = Expression.Parameter(typeof(IQueryable<ClassA>), "q");
            var expr = new SortVisitor<ClassA>().Visit(param, sort);

            Assert.AreEqual("q.OrderBy(x => x.PropInt).ThenBy(x => x.PropString)", expr.ToString());
        }
        public ElasticQueryParserConfiguration UseAliases(AliasResolver defaultAliasResolver, int priority = 50)
        {
            DefaultAliasResolver = defaultAliasResolver;

            var visitor = new AliasedQueryVisitor();

            QueryVisitor.AddVisitor(visitor, priority);
            SortVisitor.AddVisitor(visitor, priority);

            AggregationVisitor.AddVisitor(new AliasedQueryVisitor(false), priority);
            return(this);
        }
        public void CanSortByThreeAttributesOneDescendingOtherAscendingLastDescending()
        {
            var sort = Helper.Sorts(
                Helper.Sort("PropInt", ListSortDirection.Descending),
                Helper.Sort("PropString", ListSortDirection.Ascending),
                Helper.Sort("PropB.PropDecimalNullable", ListSortDirection.Descending)
                );

            var param = Expression.Parameter(typeof(IQueryable<ClassA>), "q");
            var expr = new SortVisitor<ClassA>().Visit(param, sort);

            Assert.AreEqual("q.OrderByDescending(x => x.PropInt).ThenBy(x => x.PropString).ThenByDescending(x => x.PropB.PropDecimalNullable)", expr.ToString());
        }
        public ElasticQueryParserConfiguration AddSortVisitorBefore <T>(IChainableQueryVisitor visitor)
        {
            SortVisitor.AddVisitorBefore <T>(visitor);

            return(this);
        }