Puis-je utiliser si clause avec Linq où?Si condition dans LINQ Où clause
Répondre
Oui, vous pouvez aimer:
var query = someList.Where(a => a == "something");
if (condition)
{
query = query.Where(b => b == "something else");
}
var result = query.ToList();
Parce que Where
est la production d'un IQueryable
, l'exécution est différée jusqu'à ce que le ToList
dans mon exemple afin que vous puissiez chaîne Where
s ensemble autant que vous le souhaitez, puis exécutez juste après avoir passé toutes vos conditions.
Faire usage de WhereIf
méthode extenstion avaialbe dans LINQ
Exemple
if (SearchControlMain.PostingID.HasValue)
query = query.Where(q => q.PostingID == SearchControlMain.PostingID);
au lieu d'aller au-dessus pour le dessous
query = query.WhereIf(SearchControlMain.CategoryID.HasValue, q => q.CategoryID == SearchControlMain.CategoryID);
L'un des liens est mort et il n'y a rien de tel que "WhereIf" dans mon EF. – A1rPun
Je ne suis pas sûr de ce que la question est, mais une réponse possible pourrait être:
Oui,
list.Where(item => { if (Foo(item)) return true; else return false; });
Ce serait une façon compliquée de dire quelque chose de simple, cependant.
comment cela sera possible avez-vous essayé? –
Oui, au moins cela fonctionne avec linq-to-objects. –
Ce qui est égal à: list.Where (item => Foo (item)); –
Je ne sais pas si cela est approprié, mais il est très utile, vous pouvez utiliser ifs assez haut la main avec conditionnelles où les clauses:
var r = (from p in productinfo.tblproduct
where p.Accountid == accountid
select p);
if (uuf1 != null)
r = r.Where(p => p.UnitUserField1 == uuf1);
if (uuf2!= null)
r = r.Where(p => p.UnitUserField2 == uuf2);
Ainsi, la clause where sera modifiée selon ce qui est en UUF1 ou UUF2-à-dire vous pourriez avoir seulement UUF1 avec l'information, auquel cas il prendra cela et ignorera la clause UUF2 où, vous pourriez avoir les deux dans lesquels il prendra les deux ou vous pourriez ne pas avoir n'importe quoi dans UUF1 ou 2 et votre clause where prendra juste le comme la clause where.
J'ai eu un scénario comme celui-ci où j'ai dû vérifier null dans la liste elle-même. C'est ce que j'ai fait.
items = from p in items
where p.property1 != null //Add other if conditions
select p;
// Use items the way you would use inside the if condition
Mais comme Kelsey a souligné cela fonctionnerait aussi -
items = items.Where(a => a.property1 != null);
var query = someList.Where(a => (someCondition)? a == "something" : true);
donc, si 'conditionquelconque' est faux, 'Où' sera sautée.
Cela devrait vraiment être la réponse acceptée –
Dans mon cas, il y avait deux « conditionnel », où en fonction des clés de recherche, alors je l'ai:
var query = db.Package.Include("SomeThing")
.Where(item => searchString1 == null || searchString1 == "" || item.Contains(searchString1))
.Where(item => searchString2 == null || searchString2 == "" || item.Contains(searchString2));
...
- 1. "où dans" clause LINQ
- 2. LINQ où Clause doute
- 3. LINQ - si la condition
- 4. Dynamic LINQ Multiple Où Clause
- 5. LINQ condition multiple sur "sur" clause
- 6. LINQ: Group By + Où dans la clause
- 7. utiliser si d'autre avec LINQ Où
- 8. Subsonic3 Où "OU" clause Linq requête
- 9. linq où condition sur sous-sélection
- 10. requête linq ajouter dynamiquement où condition?
- 11. déclaration LINQ comme si la condition
- 12. Comment utiliser où condition
- 13. En utilisant plus d'une condition dans LINQ de méthode où
- 14. Conditionnel Check in Où clause
- 15. Hql problème où clause
- 16. comment casser la boucle si la condition satisfait dans linq?
- 17. Linq où clause avec plusieurs conditions et null vérifier
- 18. LINQ Join Where Clause
- 19. LINQ dynamique Où - Ne pas ajouter la clause
- 20. linq où problème de clause sur plusieurs tables de jointure
- 21. LINQ Où avec ET OU
- 22. mysql où la condition
- 23. MySQL conditionnel où Clause
- 24. IN opérateur dans où clause
- 25. Différence entre Condition dans Où et Condition dans Join
- 26. Clause LINQ inefficace 'ANY'
- 27. Linq to Sql: où l'impact de l'ordre de condition
- 28. LINQ to NHibernate - Avoir où les problèmes de clause
- 29. Utiliser la variable dans la clause where uniquement si elle n'est PAS vide? Une sorte de dynamique où clause?
- 30. Nhibernate Où Condition
+1 Meilleure réponse sur trois. –
Où ne produit pas IQueryable, il produit IEnumerable. Mauvaise réponse –
@OmerK Où produit IQueryable, si l'objet sur lequel vous exécutez la méthode d'extension est également un IQueryable, si vous l'exécutez sur un IEnumerable, vous obtiendrez un IEnumerable. –