Posso usare se clausola con Linq dove?Se la condizione in LINQ Dove clausola
risposta
Sì è possibile, come:
var query = someList.Where(a => a == "something");
if (condition)
{
query = query.Where(b => b == "something else");
}
var result = query.ToList();
Perché Where
sta producendo un IQueryable
, l'esecuzione è rimandata alla ToList
nel mio esempio in modo da poter catena Where
s insieme tanto quanto si desidera e poi basta eseguirlo dopo aver superato tutte le tue condizioni.
Fare uso di WhereIf
metodo extenstion avaialbe in linq
Esempio
if (SearchControlMain.PostingID.HasValue)
query = query.Where(q => q.PostingID == SearchControlMain.PostingID);
anziché sopra andare per il seguito
query = query.WhereIf(SearchControlMain.CategoryID.HasValue, q => q.CategoryID == SearchControlMain.CategoryID);
Uno dei collegamenti è morto e non esiste una cosa come "WhereIf" nel mio EF. – A1rPun
io non sono sicuro di quello che la domanda è, ma una possibile risposta potrebbe essere:
Sì,
list.Where(item => { if (Foo(item)) return true; else return false; });
Sarebbe un modo complicato per dire qualcosa di semplice, però.
come sarà possibile aver provato? –
Sì, almeno funziona con linq-to-objects. –
Che è uguale a: list.Where (item => Foo (item)); –
Non so se questo è appropriato, ma è molto utile, è possibile utilizzare IFS abbastanza comodamente con condizionale WHERE:
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);
Quindi la clausola in cui sarà modificato in base a ciò che è in UUF1 o UUF2 vale a dire potresti avere solo UUF1 con informazioni, nel qual caso ci vorrà e ignorare la clausola UUF2 where potresti avere entrambe le opzioni in cui prenderà entrambe o potresti non avere nulla in UUF1 o 2 e la tua clausola where prenderà semplicemente la accountid come clausola where.
Avevo uno scenario come questo in cui dovevo controllare null all'interno della lista stessa. Questo è quello che ho fatto.
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
Ma, come Kelsey ha sottolineato questo dovrebbe funzionare anche -
items = items.Where(a => a.property1 != null);
var query = someList.Where(a => (someCondition)? a == "something" : true);
così, se 'someCondition' è falsa, 'Dove' verrà ignorato.
Questa dovrebbe essere la risposta accettata –
Nel mio caso c'erano due "con riserva", dove a seconda chiavi di ricerca, così ho fatto:
var query = db.Package.Include("SomeThing")
.Where(item => searchString1 == null || searchString1 == "" || item.Contains(searchString1))
.Where(item => searchString2 == null || searchString2 == "" || item.Contains(searchString2));
...
- 1. Dove clausola IN in LINQ
- 2. LINQ - nidificato dove clausola
- 3. LINQ Dove con E OPPURE condizione
- 4. se la condizione in cui la clausola di query SQL
- 5. LINQ - se condizione
- 6. Operatore ternario in LINQ dove clausola
- 7. Se le istruzioni all'interno di una clausola Linq dove
- 8. linq alle entità, una clausola where in where? (interno dove)
- 9. C# Linq dove clausola come variabile
- 10. LINQ Dove nella clausola di riscossione
- 11. LINQ Join Where Clausola
- 12. Utilizzo di string.compare in una query linq dove clausola
- 13. linq dove clausola e conteggio risultano in un'eccezione nulla
- 14. RavenDB - Facoltativo dove clausola
- 15. Linq: come escludere la condizione se il parametro è nullo
- 16. LINQ to Entities - Dove IN clausola nella query
- 17. Java equivalente di Dove clausola in C# LINQ
- 18. Dove predicti in LINQ
- 19. linq join con condizione condizione
- 20. Come ignorare uno specifico con una clausola LINQ dove?
- 21. Clausola dynamic where in Linq alle entità
- 22. Clausola dove clausola con condizioni multiple e controllo nullo
- 23. LINQ Condizione "Dove" -> modifica del valore della proprietà
- 24. Elenco dei predicati C# passato a Linq Clausola Dove
- 25. LINQ DOVE con OR
- 26. Dove clausola che riguarda join
- 27. Linq: lungimirante condizione
- 28. LINQ multiple where clausola
- 29. La singola o di default con condizione o clausola Where
- 30. Perché Linq ignora la mia clausola where?
+1 Miglior risposta dei tre. –
Dove non produce IQueryable, produce IEnumerable. Risposta errata –
@OmerK Dove il prodotto In-fact IQueryable, se l'oggetto su cui si sta eseguendo il metodo di estensione è anche IQueryable, se lo si esegue su un oggetto IEnumerable, si otterrà un oggetto IEnumerable. –