2016-02-21 125 views
4

我有一個列表IsActive現在我想要得到一個給定狀態的記錄列表,但我想處理IsActive空值爲false。 在SQL我們使用:在Linq的ISNULL相當於

SELECT * FROM dbo.Table c WHERE ISNULL(IsActive, 0) = @act 

怎樣才能做到這一點的LINQ?

PS:我使用LINQ到實體,所以我不能用一個函數來投像值:

Table.Where(t=> Parse(t.IsActive) == act) 

bool Parse(bool? val){ 
    return val == true? true : false; 
} 

我能想到的辦法是:

Table.Where(t=> (t.IsActive==null || t.IsActive == false) && act == false) 
       || (t.IsActive==true && act == true)); 

但這個解決方案似乎很差,我認爲應該有更好的方法。

回答

7

您可以使用??運營商,而不是ISNULL

Table.Where(t=> (t.IsActive ?? false) == act); 
+0

謝謝你,救了我大量的髒代碼;) –