예제 #1
0
        public void ExpressionParseTest()
        {
            var customers = new Customer[]
            {
                new Customer {
                    Id = 1, Name = "Customer1"
                },
                new Customer {
                    Id = 2, Name = "Customer2"
                }
            }.AsEnumerable();

            string query  = "customers.Where(c => c.Id == 1).OrderBy(c=> c.Name)";
            var    lambda = XLDynamicExpressionParser.ParseLambda(new [] { Expression.Parameter(customers.GetType(), "customers") }, null, query);
            var    dlg    = lambda.Compile();

            dlg.DynamicInvoke(customers).Should().BeAssignableTo <IEnumerable <Customer> >();
            ((IEnumerable <Customer>)dlg.DynamicInvoke(customers)).Should().HaveCount(1);
            ((IEnumerable <Customer>)dlg.DynamicInvoke(customers)).First().Id.Should().Be(1);
        }