Pouvez-vous ajouter une condition "ou" ou "une entité dans le cadre d'entité? Par exemple, quelque chose comme:
Property1 == (1 ou 2 ou 3) P> blockquote>
Le message que je reçois lors de la mise en place de la valeur de "1 || 2 || 3" ou "1,2,3" ou "1 ou 2 ou 3" renvoie ce message: P>
condition is not compatible with the type of the member
3 Réponses :
Vous devez faire:
var results = entityCollection.Where(entity => entity.Property1 == 1 || entity.Property1 == 2 || entity.Property1 == 3);
J'avais peur de ça. Ce que j'aimerais faire, c'est que la même condition ait lieu chaque fois qu'une requête contre cette table est exécutée afin que je n'ai pas besoin d'écrire le code ci-dessus chaque fois que je frappe la table.
@Blakewell: mettez la requête dans une classe d'utilité afin que vous puissiez la réutiliser.
@Reed Copsey: Vous manque-t-il d'une entité => code>?
@Mark: plus rien;) qui arrive quand je goof et reformuler des choses trop vite .. Merci.
Et si je veux concaténer "ou" ou "" sur une boucle, les propriétés obtiennent-elles?
n'ai pas essayé cela, mais vous pouvez essayer d'utiliser contient code>. Pas sûr de la performance, mais le code est plus petit:
contient code> est uniquement pris en charge dans EF 4, qui n'a pas encore été publié (il sort le 12 avec .NET 4). Il y a un candidat à la libération sur le site Web de MS.
N'a même pas pensé à cela - j'utilise EF 4 pendant un moment, cela semblait donc normal.
Vous devriez également consulter le constructeur de prédicats: http://www.albahaari.com/nutshell/predicatebuilder.aspx
C'est Un peu plus avancé, mais si vous devez avoir à des conditions de chaîne dynamiquement, c'est votre meilleur choix. P>
foreach (string keyword in keywords) { string temp = keyword; predicate = predicate.Or (p => p.Description.Contains (temp)); }