2011-10-16 9 views
6

Come è possibile confrontare un valore booleano sia vero che falso in una query LINQ?LINQ query in cui il valore booleano è vero o falso

Se hideCompleted è vero, voglio mostrare i valori in cui IsCompleted è falsa Se hideCompleted è falso, voglio mostrare i valori in cui IsCompleted è vera o falsa

Esempio:

(t1.IsCompleted ?? false == (hideCompleted == true ? false : (true || false))) 

risposta

6

Solo per assicurati di aver capito bene, se hideCompleted è falso, non ti interessa quale sia il valore di IsCompleted? Se è così ...

!(hideCompleted && t1.IsCompleted) 
+0

Mentre è la risposta è intuitiva e logicamente corretto, ho incontrato problemi quando si utilizza questo con LINQ to entità. La risposta di Max Zerbini ha funzionato per me. – Jeff

4

creare una query basata su hideCompleted essere vera, simile a questo approccio:

var query = dc.SomeTable; 
if (hideCompleted) 
{ 
    query = query.Where(t1 => !t1.IsCompleted); 
} 

In questo modo quando hideCompleted vale a filtrare per t1.IsCompleted essere falso. Se hideCompleted è falso, la query originale acquisirà tutti i risultati indipendentemente dal valore di t1.IsCompleted.

3

è possibile utilizzare questa condizione

where (hideCompleted==true && t1.IsCompleted==false) || (hideCompleted==false) 
Problemi correlati