首页 > 解决方案 > 使用 Max 并接收错误“序列不包含元素”

问题描述

我正在向我的表中添加一行。其中一列 ( SubjectCount) 保存一个计数值。计数值应获取该列的最大值并加 1。

我添加了这段代码

s.SubjectCount = GetAll().Max(t => t.SubjectCount as int?)?? 0 + 1;

但该值始终为 1。如果我将其更改为

s.SubjectCount = GetAll().Max(t => t.SubjectCount) + 1;

然后,如果存在现有行,但如果表/值为空则无效,我得到错误“序列不包含元素”。

我搜索了错误并且也尝试过DefaultIfEmpty(),但这并没有解决问题(除非我的语法不正确)。

最后GetAll()目前没有返回任何行(这是我认为问题所在),所以我知道我可以手动添加第一行,但理想情况下,如果表为空,我想要一个具体的解决方案来解决这个问题?

标签: c#asp.netasp.net-mvclinqlinq-to-sql

解决方案


这行得通吗?

s.SubjectCount = GetAll().Max(t => t.SubjectCount as int?)?? 0;
s.SubjectCount++;

如果表中有一行或多行,您之前的实现不会加 1,这就是它总是返回 1 的原因。


推荐阅读