【问题标题】:The result of expression is always true since value of type "double" is is never equal to null表达式的结果始终为真,因为“double”类型的值永远不会等于 null
【发布时间】:2021-07-23 23:08:00
【问题描述】:

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

// 我无法在 sql server 中更改数据类型 具有数据类型的 SQL 列名称:RMU:Float

具有数据类型的模型类:

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

LINQ -->

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

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

如何去除那些为空的记录请告诉。

【问题讨论】:

  • 为什么不用double? 代替RMU
  • 我已经尝试过,但是在更新模型时它给了我错误,所以有什么解决方法或我可以在 C# 代码中做的任何其他事情。
  • @ShanuGarg 将该错误添加到问题中
  • 看起来您正在使用 LINQ to 数据库,但不要说是哪个:LINQ to SQL / EF 6.x / EF Core 2.0 / 2.1 / 3.x / 5.x / 6。 X?另外,哪个数据库提供商?
  • @NishānWickramarathna 正确阅读它是警告而不是错误。

标签: c# asp.net linq nullable c#-8.0


【解决方案1】:

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

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

double? value = null;

所以在你的情况下是

public double? RMU { get; set; }

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-09
      • 2013-08-19
      • 2021-12-30
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2018-07-15
      • 2013-12-27
      相关资源
      最近更新 更多