c# - 如何修复这个 LINQ 函数?

标签 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 类型的成员,该类型是不可为 null 的值类型。

Parent_ObjectiveID 是一个可以为 null 的 int,并且级别仅是 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();

关于c# - 如何修复这个 LINQ 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7081241/

相关文章:

c# - .Net 5 DateTime.ParseExact 问题

linq - 如何获取按计数列排序的组

linq-to-sql - 在 Linq to Sql 中使用 UoW 模式失去数据绑定(bind)的可能性

.net - `SELECT MIN(ZoneMin), MAX(ZoneMin) FROM Plant` 作为 LINQ to SQL

c# - Linq 分组 - <k,v> 我的 'V' 去哪儿了?

C# 在检查条件后初始化变量

c# - ORM 的良好特性

c# - 使用 SWIG 从 C++ 生成 C# 接口(interface)

linq - 有没有办法只将表添加到 edmx 文件中?

c# - 从 Core 控制台应用程序连接到 Core MVC 应用程序数据上下文