Existe-t-il une méthode dans Linq où vous pouvez utiliser pour créer des chaînes SQL comme "... where (a = 1) OR (a = 2)"?
.net
linq
where-clause
dstr
la source
la source
||
et que vous voulez quelque chose de dynamique, commea=a.where(hour=> hour<20); if(weekend) a=a.where(hour=> hour>6);
. Vous voudrez peut-être le dire plus clairement ...Réponses:
Vous pouvez certainement le faire dans une clause Where (méthode d'extension). Si vous avez besoin de créer dynamiquement une requête complexe, vous pouvez utiliser un PredicateBuilder .
Ou en utilisant un PredicateBuilder
la source
Vous pouvez utiliser les opérateurs booléens .NET standard dans votre clause where unique:
la source
Vous utilisez tous les mêmes opérateurs que dans C normal # ===> || pour "ou" && pour "et" etc.
la source
dans votre
.Where()
appel utiliser l' opérateur booléen standard « ou » opérateur||
.Tout ce que fait l'appel Where est une comparaison booléenne sur tout ce que vous voulez, vous pouvez donc le remplir avec autant de logique conditionnelle que vous le souhaitez.
la source
Si vous ne connaissez pas le nombre de paramètres, vous pouvez utiliser ceci:
Exemple de données
Code
la source
Ceci est intégré dans .net maintenant, je ne sais pas si ce n'était pas le cas auparavant. Étant donné une requête Linq existante, vous pouvez ajouter une clause where qui prend un tableau de chaînes (SearchStrings) et vérifier si l'une d'entre elles correspond à n'importe quel objet de la collection que vous recherchez. L'utilisation de ToLower () garantit simplement que vous évitez le respect de la casse dans les requêtes SQL.
Vous pouvez faire la même chose pour un prédicat «et» en faisant correspondre tous les mots du tableau à l'objet de la collection.
Dans cet exemple, i correspond à chaque objet d'une collection et s correspond à chaque chaîne du tableau SearchStrings.
la source