【问题标题】:I got an error when comparing non-nullable type to null将不可为空的类型与 null 进行比较时出现错误
【发布时间】:2011-08-16 04:57:38
【问题描述】:

我在这一行遇到了问题:

int? nextLevel = (from p in cd.Objective
                  where p.Parent_ObjectiveID == null
                  select p.ObjectiveID).Max() + 1;

错误说明:

null 值不能分配给 System.Int32 类型的成员,该类型是不可为 null 的值类型。

我该如何解决?

更新:

但是 p.Parent_ObjectiveID 是 int 吗?数据类型。可以为空。

【问题讨论】:

  • 请注意,如果您使用它来确定新 ID 作为数据库访问的一部分,您不能总是保证下一个 ID 将是 maxid+1。撇开并发问题不谈,您可能知道有许多失败的插入已生成自动增量值。
  • 只需发布一个指向您找到的解决方案的答案并接受它。

标签: c# nullable


【解决方案1】:

objectiveID 是不可为空的类型。那么检查 NULL 类型有什么意义呢?您永远不能将空值分配给不可为空的值。可以使用objectiveID吗?而是..

【讨论】:

  • 但是 p.Parent_ObjectiveID 是可以为空的类型。我的意思是:int?
【解决方案2】:

基本上,p.Parent_ObjectiveID 不能是null,(即“不可为空”类型)。所以无需检查是否为null

所以要修复它,去掉 where 部分,或者将其从 null 更改为 System.Int32 值。

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 2023-03-29
    • 1970-01-01
    • 2012-10-14
    • 2018-09-11
    • 1970-01-01
    • 2012-05-31
    • 2016-02-07
    相关资源
    最近更新 更多