Entity Framework comodines y Linq
¿Es posible construir una consulta Linq válida que contenga caracteres comodín?
He visto varias respuestas a esta pregunta que sugieren usar:
.Where(entity => entity.Name.Contains("FooBar"))
.Where(entity => entity.Name.EndsWith("Bar"))
.Where(entity => entity.Name.StartsWith("Foo"))
O construyendo 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));
La primera solución no funcionaría si el comodín no estuviera al principio o al final de una cadena, por ejemplo,searchTerm = "Foo%Bar"
.
La segunda solución, utilizando RawSql, no me sienta bien y se siente como una salida barata. Pero funciona.
La tercera opción que todavía tengo que probar es crear algo que pueda analizar el término de búsqueda y construir una consulta de Linq válida, que es algo que @Slauma tuvo que ver en el enlace 2 a continuación. Pero esto aún no funcionaría si el comodín no estuviera al principio o al final del término de búsqueda.
Entonces, la pregunta: ¿es posible construir una consulta Linq válida que contenga caracteres comodín?
EDITAR: Vale la pena mencionar que en este caso estoy usando componentes de acceso a datos de Oracle (ODAC / ODP), pero no creo que haga mucha diferencia en este caso.
campo de golf:
1.Consultas "me gusta" en Entity Framework
2.Búsqueda exacta y comodín condicional en el término de búsqueda