public Expression <Func <IQueryable <T> > > ODataApply <T, K>(IQueryable <T> dataSource, string filter, string orderby, string selectExpand) { var queryHelper = new ODataPredicateBuilder(typeof(T), typeof(K)); queryHelper.EvaluateLocals = true; var expression = queryHelper.GetExpressionFromString(typeof(T), typeof(K), filter, orderby, selectExpand); var lambda = DataSourceReplacementVisitor.Replace(expression, dataSource); return(lambda); }
public void ODataWhere1() { var type = typeof(Family); var query = "Name eq 'Da Family'"; var family = Samples.GetSampleData(); ODataPredicateBuilder queryHelper = new ODataPredicateBuilder(typeof(Family)); queryHelper.EvaluateLocals = true; var expression = queryHelper.GetExpressionFromString(typeof(Family), typeof(Family), query); //var evaluatedExpression = CapturedEvaluator.Eval(expression); var extractor = WhereExtractor <Family> .Extract(expression); var lambda = extractor.Lambda; var deleg = lambda.Compile(); var result = family.Where(deleg).ToList(); Assert.IsTrue(result.Count == 1); }