public override void VisitWhereClause(WhereClause whereClause, QueryModel queryModel, int index)
        {
            // the predicate here is not a lambda; it is just the body of the Where() lambda
            var oDataFilterExpression = _filterExpressionTranslator.Translate(whereClause.Predicate);

            _query.FilterPredicate = ODataQueryPart.Filter(oDataFilterExpression);

            base.VisitWhereClause(whereClause, queryModel, index);
        }
Beispiel #2
0
        protected override FilterQueryPart Parse(string parameterValue)
        {
            var tokens = _regularExpressionTableLexer.Tokenize(parameterValue);

            var result = ShuntingYardAlgorithm(tokens);

            var builderStrategy = new FilterExpressionParserStrategy();

            var filterExpression = builderStrategy.BuildExpression(result);

            return(ODataQueryPart.Filter(filterExpression));
        }
        public void Translate_TestIntEqualsThree_ReturnsOneResult()
        {
            var left  = FilterExpression.MemberAccess("TestInt");
            var right = FilterExpression.Constant(3);

            var filterExpression = FilterExpression.Binary(left, FilterExpressionOperator.Equal, right);

            var query = new ODataQuery
            {
                FilterPredicate = ODataQueryPart.Filter(filterExpression)
            };

            var expression = _translator.Translate <TestModel>(query);

            var fn = (Func <IQueryable <TestModel>, IQueryable <TestModel> >)expression.Compile();

            var result = fn(_source).ToList();

            Assert.That(result.Count, Is.EqualTo(1));
            Assert.That(result[0].TestInt, Is.EqualTo(3));
        }