I need to use LIKE
operators in a dynamic WHERE
clause.
I am currently using =
operators but need to replace with LIKE
:
String whereClause = "1 = 1 AND ";
whereClause = whereClause + (search.Id != null ? "Id = " + search.Id + " AND " : "");
whereClause = whereClause + (search.FirstName != null ? "FirstName = \"" + search.FirstName + "\" AND " : "");
whereClause = whereClause + (search.LastName != null ? "LastName = \"" + search.LastName + "\" AND " : "");
whereClause = whereClause + (search.StudentName != null ? "StudentName = \"" + search.StudentName + "\" AND " : "");
whereClause = whereClause + (search.Country != null ? "CountryLabel = \"" + search.Country + "\" AND " : "");
whereClause = whereClause + (search.ZipCode != null ? "ZipCode = \"" + search.ZipCode + "\" AND " : "");
whereClause = whereClause + (search.City != null ? "City = \"" + search.City + "\" AND " : "");
whereClause = whereClause.Remove(whereClause.Length - 5);
IEnumerable<MyClassDto> res = (
from ...
where ...
select new MyClassDto() {
...
}
).Where(whereClause);
- I cannot use
Contains()
,StartsWith()
orEndsWith()
as search parameters can be in the form "%my%value". - I cannot manage to use
SqlMethods.Like()
in dynamicWHERE
clause. - I don't want to include it in the
WHERE
clause of theMyClassDto
query as it slow down the execution time, it is why I apply anotherWHERE
clause on theEnumerable
, matching only search parameters.
Any suggestions ?