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