c# - System.Linq.Queryable.FirstOrDefault(...) 返回空值
问题描述
当数据库表为空时,我访问结果的请求会引发错误。
var resultEthnie = (from k in db.N_QONV
where k.qonv_fk_numvol == clientId &&
k.qonv_fk_eon_id == 64
select new { k.qonv_fk_num_question }
).Take(1);
return Convert.ToInt32(resultEthnie.FirstOrDefault().qonv_fk_num_question);
有没有办法在查询结果为空时有一个默认的返回结果值?
解决方案
有没有办法在查询结果为空时有一个默认的返回结果值?
您收到错误是因为您尝试访问查询结果的第一个元素而不检查它是否为空。
要解决问题?
,请在方法后使用运算符FirstOrDefault()
:
resultEthnie.FirstOrDefault()?.qonv_fk_num_question; // ? will escape accessing to
// qonv_fk_num_question if the result is null
但是在这里我看到了一个更优雅的解决方案。而不是使用过滤,选择和稍后尝试访问结果的第一个元素,简单使用FirstOrDefault()
方法lambda version:
var result = db.N_QONV.FirstOrDefault(k => (k.qonv_fk_numvol == clientId) &&
(k.qonv_fk_eon_id == 64));
return Convert.ToInt32(result?.qonv_fk_num_question);
推荐阅读
- javascript - vuejs中的多个嵌套下拉菜单
- powershell - 我是否使用了错误的 .exe 文件来创建 Chocolatey 包?
- angular - 无法绑定到“dataSource”,因为它不是“mat-table”的已知属性
- sql - 按时间序列分组的 SQL 查询
- node.js - nginx身份验证时出现Node.js 401错误
- python - 带有导入数据的 Python 地理图,例如来自荷兰的数据
- python - 将参数传递给 Flask API 方法
- python - Django - 单击最喜欢的链接后重定向到查看
- python-3.x - 制作skip-gram模型,将keras1.x代码转换为keras2.x代码
- java - 替代新方法以避免重复代码