C# 如何修复此LINQ函数?
我正在使用以下代码:C# 如何修复此LINQ函数?,c#,linq,linq-to-sql,linq-to-objects,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
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类型的成员,该类型是不可为null的值类型
Parent_ObjectiveID是一个可为null的int,而level仅为int。Max希望返回int,因为这是p.level的类型,但被迫返回null(因为查询中没有项)。如果将p.Level强制转换为可为null的int,则查询应该可以工作
var nextLevel = (from p in cd.Objective
where p.Parent_ObjectiveID == null
select (int?)p.Level).Max();