/** * Filters the set based on the expression, using sql LIKE clauses. * This does not return results but a new filtered Linq<TModel>. * * ```cs * var filteredEntities = Models.Foo.Like(e => e.Bar == "%abc%"); * ``` * * > NOTE: You may use ```!=``` for a NOT LIKE query. */ public Linq <TModel> Like(Expression <Func <TModel, bool> > predicate) { var converter = new LikeConverter(); converter.Visit(predicate.Body); return(this.Where(converter.Sql, converter.Parameters)); }
public void OrTest() { Expression <Func <GracefulTestModel, bool> > expression = e => e.Foo == "Hello" || e.Bar == 123; var converter = new LikeConverter(); converter.Visit(expression.Body); Assert.Equal("(([Foo] LIKE {0}) OR ([Bar] LIKE {1}) )", converter.Sql); Assert.Equal(new object[] { "Hello", 123 }, converter.Parameters); }
public void MethodVarTest(int value) { Expression <Func <GracefulTestModel, bool> > expression = e => e.Bar == value; var converter = new LikeConverter(); converter.Visit(expression.Body); Assert.Equal("([Bar] LIKE {0})", converter.Sql); Assert.Equal(new object[] { 123 }, converter.Parameters); }
public void NotTest() { Expression <Func <GracefulTestModel, bool> > expression = e => e.Foo != "Hello"; var converter = new LikeConverter(); converter.Visit(expression.Body); Assert.Equal("([Foo] NOT LIKE {0})", converter.Sql); Assert.Equal(new object[] { "Hello" }, converter.Parameters); }
private void MethodVarObjectTestPrvate(Models.CustomContext entity) { Expression <Func <Models.CustomContext, bool> > expression = e => e.Foo == entity.Foo; var converter = new LikeConverter(); converter.Visit(expression.Body); Assert.Equal("([Foo] LIKE {0})", converter.Sql); Assert.Equal(new object[] { "Bar" }, converter.Parameters); }