我该如何修复这个LINQ函数?

时间:2011-08-16 16:05:13

标签: c# linq linq-to-sql linq-to-objects

我正在使用此代码:

            var nextLevel = (from p in cd.Objective
                             where p.Parent_ObjectiveID == null
                             select p.Level);

它起作用,到目前为止它没有返回任何元素(因为我的数据库中没有任何元素)。虽然我想知道顶级做到这一点:

            var nextLevel = (from p in cd.Objective
                             where p.Parent_ObjectiveID == null
                             select p.Level).Max();

但是我收到了一个错误:

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

Parent_ObjectiveID是一个可以为空的int和level,只有int。

1 个答案:

答案 0 :(得分:4)

Max希望返回一个int,因为这是p.Level的类型,但强制返回null(因为查询中没有项)。如果将p.Level强制转换为可为空的int,则查询应该有效。

var nextLevel = (from p in cd.Objective
                 where p.Parent_ObjectiveID == null
                 select (int?)p.Level).Max();