c# - 使用 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()
目前没有返回任何行(这是我认为问题所在),所以我知道我可以手动添加第一行,但理想情况下,如果表为空,我想要一个具体的解决方案来解决这个问题?
解决方案
这行得通吗?
s.SubjectCount = GetAll().Max(t => t.SubjectCount as int?)?? 0;
s.SubjectCount++;
如果表中有一行或多行,您之前的实现不会加 1,这就是它总是返回 1 的原因。
推荐阅读
- maven - 收到错误消息“无法在项目上执行目标 org.apache.maven.plugins:maven-install-plugin:2.5.2:install (default-install)”
- raspberry-pi3 - 在 Raspberry Pi 和 Win IoT 上延迟 HDMI 加载
- matlab - .cnt 文件可以在 matlab 中转换为频谱图吗?如果是,那么该怎么做?
- thread-safety - vert.x 中的多实例 verticle 是线程安全的
- android - 我必须将一个 Json 对象从 Android 应用程序发送到 Azure Rest API,查看我的代码帮助我,使用其他 API
- r - R:如何将数据帧转换为事务
- r - 在ggplot2中换行后控制文本大小
- scala - 长流式火花时间窗口导致“超过 64 KB”异常
- python - Python - 用模拟替换类变量单例
- php - Laravel头像图像不显示