Avertissement: J'ai résolu le problème en utilisant Expressions de System.Linq.Expressions, mais je suis toujours à la recherche d'un moyen meilleur/plus facile.Clause dynamic where dans LINQ - avec les noms de colonnes disponibles au moment de l'exécution
la situation suivante:
var query =
from c in db.Customers
where (c.ContactFirstName.Contains("BlackListed") ||
c.ContactLastName.Contains("BlackListed") ||
c.Address.Contains("BlackListed"))
select c;
Les colonnes/attributs qui doivent être vérifiés contre le terme ne sont disponibles que sur la liste noire pour moi lors de l'exécution. Comment générer cette clause dynamique where? Une complication supplémentaire est que la collection Queryable (db.Customers ci-dessus) est tapée à une requête de la classe de base de 'Customer' (disons 'Person'), et écrire c.Address comme ci-dessus n'est pas une option .
Je serais intéressé de voir votre solution Expressions, une chance d'ajouter à votre réponse? À votre santé. – Kev
Voir cette [question] (http://stackoverflow.com/questions/30879/is-there-a-pattern-using-linq-to-dynamically-create-a-filter) et ma réponse ultérieure concernant les requêtes dynamiques LINQ – Geoff