如何将可空int与int进行比较

时间:2015-10-19 12:56:32

标签: c# compare nullable equality

在我的Linq查询中,我有以下内容:

.Where(x => x.dtt_ref_no == dtt_ref)

其中 x.dtt_ref_no 可以为空的
dtt_ref 的类型为 int
比较这两个值的正确方法是什么?

2 个答案:

答案 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))