public void TestMethod1() { var lambda = new ExpressionCriteria <Person>() .Add("Age", 60, ExpressionType.GreaterThan) .And() .Add("Address.City", "Paoli", ExpressionType.Equal) .Or() .Add("Address.Street", "Market Street", ExpressionType.Equal) .Or() .Add("Address.Id", "cf7e83b6-5cec-41d2-a100-2ff079392f7a", ExpressionType.Equal) .GetLambda(); var expected = "person => ((((person.Age > 60) And (person.Address.City == \"Paoli\")) Or (person.Address.Street == \"Market Street\")) Or (person.Address.Id == \"cf7e83b6-5cec-41d2-a100-2ff079392f7a\"))"; Assert.Equal(expected, lambda.ToString()); var result = _people.Where(lambda.Compile()).ToList(); Assert.Equal("Smith", result[0].LastName); }