コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }