Wildcards e Linq do Entity Framework

É possível construir uma consulta Linq válida que contenha caracteres curinga?

Eu vi várias respostas para esta pergunta que sugerem o uso de:

.Where(entity => entity.Name.Contains("FooBar"))
.Where(entity => entity.Name.EndsWith("Bar")) 
.Where(entity => entity.Name.StartsWith("Foo"))

OU construindo o 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));

A primeira solução não funcionaria se o caractere curinga não estivesse no início ou no final de uma string, por exemplo,searchTerm = "Foo%Bar".

A segunda solução, usando o RawSql, não combina comigo e parece uma saída barata. Mas isso funciona.

A terceira opção que eu ainda tenho que experimentar é criar algo que possa analisar o termo de busca e construir uma consulta válida no Linq, que é algo que o @Slauma teve que usar no link 2 abaixo. Mas isso ainda não funcionaria se o curinga não estivesse no início ou no final do termo de pesquisa.

Portanto, a pergunta: é possível construir uma consulta Linq válida que contenha caracteres curinga?

EDIT: Vale a pena mencionar que, neste caso estou usando o Oracle Data Access Components (ODAC / ODP), mas eu não acho que faz muita diferença neste caso.

links:

1Consultas "like" no Entity Framework

2Pesquisa exata e curinga condicional no termo de pesquisa

3Usando o RawSql

questionAnswers(3)

yourAnswerToTheQuestion