在我的Linq查询中,我有以下内容:
.Where(x => x.dtt_ref_no == dtt_ref)
其中 x.dtt_ref_no 是可以为空的
dtt_ref 的类型为 int 。
比较这两个值的正确方法是什么?
答案 0 :(得分:7)
如果您在==
上使用int?
并且int
,则代码将按原样运行,如果可空值不包含值,则会返回false
。所以它和你写的一样:
.Where(x => x.dtt_ref_no.HasValue && x.dtt_ref_no.Value == dtt_ref)
与Nullable<T>.Equals
的行为相同,因为int
会在比较时转换为int?
implicitly。
答案 1 :(得分:0)
您应该使用Equals
重载:
.Where(x => x.dtt_ref_no.Equals(dtt_ref))