2011-08-16 26 views
0

我有问题,在这条线时出现错误:我比较不空类型为空

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

错误规定:

空值不能被分配到与类型的成员System.Int32是一个不可为空的值类型。

我该如何解决?

更新:

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

+0

请注意,如果您使用它来确定新的ID作为数据库访问的一部分,您不能总是羡慕下一个ID将是maxid + 1。除了并发性问题之外,可能存在一些失败的插入,它们会在您意识到的情况下生成自动增量值。 –

+0

只需发布指向您找到并接受它的解决方案的答案。 –

回答

3

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

+0

但p.Parent_ObjectiveID是一个可为空的类型。我的意思是:int? –

+0

根据你的代码,它没有。所以请再次检查。 – Zenwalker

0

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

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