2011-10-16 41 views
6

Làm cách nào tôi có thể so sánh giá trị boolean với cả true và false trong truy vấn LINQ?Truy vấn LINQ trong đó giá trị boolean là đúng hoặc sai

Nếu hideCompleted là đúng, tôi muốn thể hiện giá trị nơi IsCompleted là sai Nếu hideCompleted là sai, tôi muốn thể hiện giá trị nơi IsCompleted là đúng hay sai

Ví dụ:

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

Trả lời

6

Chỉ cần để hãy chắc chắn tôi hiểu bạn một cách chính xác, nếu hideCompleted là sai, bạn không quan tâm giá trị của IsCompleted là gì? Nếu vậy ...

!(hideCompleted && t1.IsCompleted) 
+0

Trong khi là câu trả lời là trực quan và logic đúng, tôi gặp phải vấn đề khi sử dụng điều này với LINQ to Entities. Câu trả lời của Max Zerbini làm việc cho tôi. – Jeff

4

Xây dựng truy vấn của bạn dựa trên hideCompleted là đúng, tương tự như cách tiếp cận này:

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

Bằng cách này khi hideCompleted là đúng bạn lọc cho t1.IsCompleted là sai. Khi hideCompleted sai truy vấn ban đầu của bạn sẽ lấy tất cả kết quả bất kể giá trị của t1.IsCompleted.

3

bạn có thể sử dụng điều kiện này

where (hideCompleted==true && t1.IsCompleted==false) || (hideCompleted==false) 
Các vấn đề liên quan