Y at-il une méthode dans Linq où vous pouvez utiliser pour construire des chaînes SQL comme "... où (a = 1) OU (a = 2)"?"Ou" équivalent dans Linq Où() expression lambda
Répondre
Vous pouvez certainement le faire dans une clause Where (méthode d'extension). Si vous devez créer une requête complexe dynamiquement, vous pouvez utiliser un PredicateBuilder.
var query = collection.Where(c => c.A == 1 || c.B == 2);
ou en utilisant un PredicateBuilder
var predicate = PredicateBuilder.False<Foo>();
predicate = predicate.Or(f => f.A == 1);
if (allowB)
{
predicate = predicate.Or(f => f.B == 1);
}
var query = collection.Where(predicate);
Joli usage des prédicats! +1 :) –
Cela a fonctionné très bien car je devais construire mon Ou en fonction des valeurs des paramètres entrants - Awesome! – dadwithkids
Très cool. C'est une honte que ce n'est pas inclus en tant que fonction à l'intérieur de. NET en standard. – maxp
Vous pouvez utiliser les opérateurs booléens .NET standard dans votre seule clause where:
MyDataSource.Where(data => data.a == 'a' || data.a == 'b')
Je pense que c'est la réponse la meilleure et la plus simple. – user1477388
C'est la réponse la plus simple. – Eranda
Une solution pourrait être dynamique Linq:
Vous pouvez utiliser tous les mêmes opérateurs comme en C# ===> || pour "ou" & & pour "et" etc.
var something = from s in mycollection
where s.something == 32 ||
s.somethingelse == 45
select s
Je préfère cette méthode, elle semble plus naturelle – nXqd
dans votre .Where()
appel utilisent la norme booléenne ou d'opérateur, ||
.
var query = items.Where(item => (item == 1 || item == 2));
Tous les cas où l'appel est fait une comparaison booléenne sur tout ce que vous voulez, vous pouvez le remplir avec autant de logique conditionnelle que vous le souhaitez.
Ceci est intégré dans .net maintenant, pas sûr si elle ne l'était pas 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'elles correspond à l'objet de la collection que vous recherchez. L'utilisation de ToLower() s'assure que vous évitez la casse dans les requêtes SQL.
query.Where(i => SearchStrings.Any(s => i.ToLower().Contains(s.ToLower()));
Vous pouvez faire la même chose pour un « et » prédicat en faisant correspondre tous les mots dans le tableau à l'objet de la collection.
query.Where(i => SearchStrings.All(s => i.ToLower().Contains(s.ToLower()));
Dans cet exemple, est en corrélation avec chaque objet dans une collection, et s est en corrélation avec chaque chaîne dans le tableau searchstrings.
- 1. Linq Lambda Expression
- 2. LINQ - Substitute Expression Lambda non générique pour expression Lambda Générique
- 3. expression lambda - équivalent de sql outer join
- 4. Expression lambda pour la condition OU dans Linq à entité
- 5. Expression C# lambda dans la requête LINQ
- 6. C# LINQ sur XML => Lambda Expression
- 7. expression lambda équivalente pour cette requête expression
- 8. C# Lambda Expression Speed
- 9. Aide avec générique LINQ OrderBy Lambda Expression
- 10. Joints C#/Où avec Linq et Lambda
- 11. Expression lambda pour plusieurs pays dans Linq à Entité
- 12. Comment remplacer lambda écrit dans la clause Where de Linq avec délégué équivalent
- 13. Pouvez-vous inverser l'ordre d'une chaîne dans une ligne avec LINQ ou une expression LAMBDA
- 14. LINQ OÙ avec OU
- 15. winform combobox lambda expression
- 16. Combinaison de listes dans Lambda/LINQ
- 17. Une nouvelle expression nécessite() ou ... dans LINQ
- 18. LINQ Lambda Nested Expression pour joindre deux listes
- 19. C# Lambda Expression Aide
- 20. Expression lambda sur booléen
- 21. Convertir en expression Lambda
- 22. transformer une expression lambda
- 23. Expression lambda conditionnelle?
- 24. C# Lambda expression -Help
- 25. Lambda expression exercice
- 26. Comment effectuer une mise à jour en utilisant Linq ou Lambda? (C#, Asp.net, Linq, Lambda)
- 27. Stockage d'une expression lambda dans une variable
- 28. Linq ou Lambda Expression pour le retour des valeurs séparées par des virgules
- 29. L'utilisation d'une expression linq ou lambda en C# renvoie une collection plus une seule valeur
- 30. Aide sur la logique OU dans Linq lambda query
Je suppose que vous savez comment utiliser '||' et que vous voulez quelque chose de dynamique, comme 'a = a.where (hour => hour <20); si (week-end) a = a.where (heure => heure> 6); Vous voudrez peut-être le dire plus clairement ... – Kobi