I've just added implicit support for escaping wildcards in this commit which will now escape wildcards in the typed expressions that make use of LIKE
, namely StartsWith
, EndsWith
and Contains
, e.g:
using (var db = OpenDbConnection())
{
db.DropAndCreateTable<Poco>();
db.Insert(new Poco { Name = "a" });
db.Insert(new Poco { Name = "ab" });
db.Insert(new Poco { Name = "a_c" });
db.Insert(new Poco { Name = "a_cd" });
db.Insert(new Poco { Name = "abcd" });
db.Insert(new Poco { Name = "a%" });
db.Insert(new Poco { Name = "a%b" });
db.Insert(new Poco { Name = "a%bc" });
db.Insert(new Poco { Name = "a\\" });
db.Insert(new Poco { Name = "a\\b" });
db.Insert(new Poco { Name = "a\\bc" });
Assert.That(db.Count<Poco>(q => q.Name == "a_"), Is.EqualTo(0));
Assert.That(db.Count<Poco>(q => q.Name.StartsWith("a_")), Is.EqualTo(2));
Assert.That(db.Count<Poco>(q => q.Name.StartsWith("a%")), Is.EqualTo(3));
Assert.That(db.Count<Poco>(q => q.Name.StartsWith("a_c")), Is.EqualTo(2));
Assert.That(db.Count<Poco>(q => q.Name.StartsWith("a\\")), Is.EqualTo(3));
Assert.That(db.Count<Poco>(q => q.Name.StartsWith("a\\b")), Is.EqualTo(2));
}
This will be available in v4.0.19 which is now available on MyGet.