Подстановочные знаки Entity Framework & Linq
Можно ли построить правильный запрос Linq, который содержит символы подстановки? I '
Мы видели разные ответы на этот вопрос, которые предлагают использовать:
.Where(entity => entity.Name.Contains("FooBar"))
.Where(entity => entity.Name.EndsWith("Bar"))
.Where(entity => entity.Name.StartsWith("Foo"))
ИЛИ создание RawSql:
var commandText =
@"SELECT field
FROM table
WHERE field LIKE @search";
var query = new ObjectQuery(commandText, context);
query.Parameters.Add(new ObjectParameter("search", wildcardSearch));
Первое решение неt работает, если подстановочный знак не был в начале или конце строки, например,.searchTerm = "Foo%Bar"
Второе решение, использующее RawSql, нене сидеть рядом со мной и чувствует себя как дешевый выход. Но это работает.
Третий вариант, который мне еще предстоит опробовать, - это создать что-то, что сможет анализировать поисковый запрос и создать действительный запрос Linq, что @Slauma использовало в ссылке 2 ниже. Но это все равноне работает, если подстановочный знак не был в начале или в конце поискового запроса.
Итак, вопрос: возможно ли построить правильный запрос Linq, который содержит символы подстановки?
РЕДАКТИРОВАТЬ: Стоит отметить, что в этом случае я использую компоненты доступа к данным Oracle (ODAC / ODP), но я неНе думаю, что в этом случае есть большая разница.
ссылки по теме:
1. «лайк" запросы в Entity Framework