Подстановочные знаки Entity Framework & Linq

Можно ли построить правильный запрос Linq, который содержит символы подстановки?

Я видел различные ответы на этот вопрос, которые предлагают использовать:

.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<Profile>(commandText, context);
query.Parameters.Add(new ObjectParameter("search", wildcardSearch));

Первое решение не будет работать, если подстановочный знак не находится в начале или конце строки, например,searchTerm = "Foo%Bar".

Второе решение, использующее RawSql, не подходит мне и похоже на дешевый выход. Но это работает.

Третий вариант, который мне еще предстоит опробовать, - это создать что-то, что сможет анализировать поисковый запрос и создать действительный запрос Linq, что @Slauma использовало в ссылке 2 ниже. Но это все равно не сработает, если подстановочный знак не будет в начале или конце поискового запроса.

Итак, вопрос: возможно ли построить правильный запрос Linq, который содержит символы подстановки?

РЕДАКТИРОВАТЬ: Стоит отметить, что в этом случае я использую компоненты доступа к данным Oracle (ODAC / ODP), но я не думаю, что это имеет большое значение в этом случае.

ссылки по теме:

1.«Похожие» запросы в Entity Framework

2.точный и групповой поиск при условии поиска

3.Использование RawSql

Ответы на вопрос(3)

Ваш ответ на вопрос