Customer.text est un champ dans une base de données T-SQL (que je ne contrôle pas et que je ne peux donc pas modifier) de type "text".
J'aimerais faire quelque chose comme ça :
List<string> compare = new List<string>();
compare.Add("one");
compare.Add("two");
var q = from t in customer
where t.text.Contains( compare.First())
select t;
ça va marcher.
Mais maintenant j'aimerais faire quelque chose comme : (!NE FONCTIONNE PAS !)
var q = from t in customer
where compare.Contains( t.text )
select t;
Comment puis-je y parvenir ? Est-ce même possible ?
EDIT : Le problème n'est évidemment pas très clair : une colonne de texte en SQL ne peut pas être interrogée en utilisant "=" mais seulement avec LIKE. Ainsi, la fonction compare.Contains( t.text ) entraînera une erreur, car elle est convertie en une requête utilisant "=".
Ce que je n'ai pas dit - je pensais que c'était sans importance - c'est que j'utilise LINQ-to-ORM (LLBLGen dans ce cas). Ce que j'ai essayé à la place :
var q = from t in customer
where compare.Any( x => t.text.Contains(x) )
select t;
Cela n'a pas fonctionné non plus. Je ne suis pas au travail pour le moment, mais l'exception concernait une expression constante qui ne pouvait pas être convertie en une expression fixe.
J'espère que cela a apporté quelques éclaircissements.
EDIT2 :
Joseph me l'a fait remarquer : PredicateBuilder . Il crée une expression sur un type d'objet donné. Mon problème est que mon type est un type anonyme issu de jointures multiples. Existe-t-il un moyen simple ou élégant de gérer cela ?