如何比较可空整型和整型

本文关键字:整型 比较 何比较 | 更新日期: 2023-09-27 18:18:31

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

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

, x。dtt_ref_no是一个可为空的int
dtt_ref 的类型是 int
比较这两个值的正确方法是什么?

如何比较可空整型和整型

您的代码按原样工作,如果您在int?int上使用==,如果可空值不包含值,它将返回false。这就像你写:

.Where(x => x.dtt_ref_no.HasValue &&  x.dtt_ref_no.Value == dtt_ref)

它的行为与Nullable<T>.Equals相同,因为int将在比较时隐式转换为int?

您应该使用Equals重载:

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