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