我有一个列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));
但这个解决方案似乎很差,我认为应该有更好的方法。
答案 0 :(得分:8)
您可以使用??
运算符代替ISNULL
:
Table.Where(t=> (t.IsActive ?? false) == act);