ISNULL相当于Linq

Ash*_*ani 4 c# linq entity-framework

我有一个列有一列的表现在IsActive我想得到一个具有给定状态的记录列表但我想处理IsActivenull值为false.在SQL中我们使用:

SELECT * FROM dbo.Table c WHERE ISNULL(IsActive, 0) = @act 
Run Code Online (Sandbox Code Playgroud)

如何使用LINQ做到这一点?

PS:我正在使用LINQ to Entities,因此我不能使用函数来转换值,如:

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

bool Parse(bool? val){
    return val == true? true : false;
}
Run Code Online (Sandbox Code Playgroud)

我能想到的方式是:

Table.Where(t=> (t.IsActive==null || t.IsActive == false) && act == false)
              || (t.IsActive==true && act == true));
Run Code Online (Sandbox Code Playgroud)

但这个解决方案似乎很差,我认为应该有更好的方法.

das*_*ght 8

您可以使用??运算符代替ISNULL:

Table.Where(t=> (t.IsActive ?? false) == act);
Run Code Online (Sandbox Code Playgroud)