2010-12-09 61 views
0

我想SQL的下面一行转换为LINQ代码:ISNULL和可空类型的LINQ

&& Deleted != null ? Deleted : false 

这:

AND IsNull(Deleted,0) = 0 

我已经做这个尝试

&& (bool)Deleted != null ? (bool)Deleted : false 

第一次尝试给了我一个错误,因为Deleted是可以为空的类型,并且第二次尝试不会返回与t相同的数据集他原来的SQL。有人可以告诉我我做错了什么吗?

回答

1

您可以使用

& & Deleted.GetValueOrDefault(假)==假

+1

如果默认值是布尔类型的?,那么它应该是 `&& Deleted.GetValueOrDefault(假)== FALSE`或只需'&&!Deleted.GetValueOrDefault(false)`。 – CGK 2010-12-09 12:21:55

1

LINQ;

where !(u.Deleted ?? false)

SQL输出:

WHERE(CASE WHEN([Extent1] [删除] IS NULL)然后浇铸(0作为位)ELSE [Extent1] [。删除] END)<>铸造(1作为位)