Exemplo n.º 1
0
        private void button3_Click(object sender, EventArgs e)
        {
            Bar[] ba = new Bar[] { new Bar {
                                       User = "******", Money = 1000
                                   },
                                   new Bar {
                                       User = "******", Money = 2000
                                   },
                                   new Bar {
                                       User = "******", Money = 3000
                                   } };

            /*
             * var l = ba.AsQueryable<Bar>().Where("User==@0", "A");
             */

            // filter: Money>1500
            var filter = CriteriaOperator.Parse("[Money]>1500");

            // get expression's body: bar.Money>1500
            var converter          = new CriteriaToExpressionConverterForObjects();
            ParameterExpression pe = Expression.Parameter(typeof(Bar), "bar");
            var expPredicateBody   = converter.Convert(pe, filter);

            // get lambda expression: bar => bar.Money>1500
            LambdaExpression lambda = Expression.Lambda <Func <Bar, bool> >(expPredicateBody, new ParameterExpression[] { pe });

            Console.WriteLine(lambda.Compile().DynamicInvoke(ba[1]));
        }
Exemplo n.º 2
0
        private void button1_Click(object sender, EventArgs e)
        {
            Bar[] ba = new Bar[] { new Bar {
                                       User = "******", Money = 1000
                                   },
                                   new Bar {
                                       User = "******", Money = 2000
                                   },
                                   new Bar {
                                       User = "******", Money = 3000
                                   } };

            /*
             * var l = ba.AsQueryable<Bar>().Where("User==@0", "A");
             */
            var converter = new CriteriaToExpressionConverterForObjects();
            var l         = ba.AsQueryable <Bar>().AppendWhere(converter, CriteriaOperator.Parse("[Money]>1500")).Cast <Bar>();

            foreach (var b in l)
            {
                Console.WriteLine(b.User + " " + b.Money);
            }
        }