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); }
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)); }