Descargo de responsabilidad: He resuelto el problema usando Expresiones de System.Linq.Expressions, pero sigo buscando una forma mejor/más fácil.Cláusula dynamic where en LINQ - con nombres de columna disponibles en tiempo de ejecución
considere la siguiente situación:
var query =
from c in db.Customers
where (c.ContactFirstName.Contains("BlackListed") ||
c.ContactLastName.Contains("BlackListed") ||
c.Address.Contains("BlackListed"))
select c;
Las columnas/atributos que necesitan ser comprobados contra el término en la lista negra sólo están disponibles para mí en tiempo de ejecución. ¿Cómo puedo generar esta cláusula dynamic where?
Una complicación adicional es que la colección Queryable (db.Customers anterior) se escribe en un Queryable de la clase base de 'Customer' (diga 'Person') y, por lo tanto, escribir c.Address como se indica anteriormente no es una opción .
Me gustaría ver su solución Expressions, ¿hay alguna posibilidad de que agregue su respuesta? Aclamaciones. – Kev
Consulte esta [pregunta] (http://stackoverflow.com/questions/30879/is-there-a-pattern-using-linq-to-dynamically-create-a-filter) y mi respuesta posterior con respecto a consultas dinámicas LINQ – Geoff