Мне нужно использовать операторы LIKE
в динамическом WHERE
.Linq to sql, используя как в динамике, где статья
настоящее время я использую =
операторов, но необходимо заменить 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);
- Я не могу использовать
Contains()
,StartsWith()
илиEndsWith()
как параметры поиска могут быть в виде «% моего% стоимости». - Я не могу использовать
SqlMethods.Like()
в динамическомWHERE
статье. - Я не хочу включать его в предложение
WHERE
запросаMyClassDto
, поскольку он замедляет время выполнения, поэтому я применяю другое предложениеWHERE
наEnumerable
, сопоставляя только параметры поиска.
Любые предложения?
В таких ситуациях я предпочитаю использовать старое пространство имен 'SqlClient', и сами заполнить модели. –
Я, наконец, использовал необработанный SQL-запрос с использованием 'myDb.Database.SqlQuery()', не оптимальный для обслуживания, но, по-видимому, является самым простым и быстрым решением, позволяющим использовать оператор 'LIKE'. – Yann39