表达式的结果始终为真,因为“double”类型的值永远不等于 null

问题描述

我正在尝试排除那些为空的记录。

// 我无法更改 sql server 中的数据类型 带有数据类型的 sql 列名:RMU:浮点

具有数据类型的模型类:

 [Column(TypeName = "float")]
 public double RMU { get; set; }

LINQ -->

var RMUNotNullCheck = DB1.tblImport.Where(x => x.RPU != null).ToList();

上面的代码给了我警告,因为 double 不能为空,并且很少有记录保持为空,我不需要那个。

如何去掉那些为空的记录。

解决方法

您可以将 RMU 属性设为 Nullable<T>,然后在 LINQ 中检查 null

public double? Rmu { get; set;} 
...
...
var rmuWithoutNull = DB1.tblImport.Where(x => x.Rmu != null).ToList();
,

如果 double 是 nullable value type,您只能将 double 与 NULL 进行比较。如果不是,double 的默认值将是 0 并且永远不会为 null。

你可以像这样定义一个可为空的 double 属性:

double? value = null;

所以你的情况是

public double? RMU { get; set; }

并且您的代码应该可以正常工作。