ISNULL相当于Linq

时间:2016-02-21 12:53:15

标签: c# entity-framework linq

我有一个列IsActive的表现在我想获得一个具有给定状态的记录列表,但我想将IsActive处理为空值为false。 在SQL中我们使用:

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

如何使用LINQ做到这一点?

P.S。:我正在使用LINQ to Entities,因此我无法使用函数来转换值:

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));

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

1 个答案:

答案 0 :(得分:8)

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

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