Je n'arrive pas à comprendre comment comparer les valeurs booléennes dans une expression C# lambda pour EF4. J'ai essayé:Expression lambda compare booléen comme faux résultats dans NotSupportedException
cl.Where(c => c.Received == false);
et ceci:
cl.Where(c => !c.Received);
et ceci:
cl.Where(c => c.Received.Equals(false));
mais je continue à obtenir cette erreur:
Exception Details: System.NotSupportedException: Unable to create a constant value
of type 'System.Object'. Only primitive types ('such as Int32, String, and Guid')
are supported in this context.
Après avoir passé une bonne quantité de temps à la recherche de cela, il me manque encore quelque chose g. Je suis assez nouveau à Lambdas donc pointers serait apprécié.
Edit2: plus de code re: comment
int bar = 42;
var cl = db.foo.Where(c => c.baz.Equals(bar));
//codez (just an if statement)
cl.Where(c => c.Received == false).OrderByDescending(c => c.dateAdded);
Voilà. Même si je retire le orderby il ne fonctionne toujours pas
Edit3:
Solution:
int bar = 42;
var cl = db.foo.Where(c => c.baz == bar);
cl.Where(c => c.Received == false).OrderByDescending(c => c.dateAdded);
L'erreur est probablement dans l'autre partie de votre déclaration. Pourriez-vous poster le reste de la ligne à partir de laquelle vous faites un appel, et quelques autres cadres de la trace de la pile? – dasblinkenlight
Ce que dit @dasblinkenlight est correct. Les deux premières méthodes fonctionneront bien pour comparer les booléens dans EF 4 –
merci pour la réponse rapide @dasblinkenlight J'ai ajouté une partie du code environnant et la trace de la pile – Eonasdan