You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.Linq.Queryable.FirstOrDefault返回null,空表查询报错如何设默认返回值

解决FirstOrDefault返回null时的空引用问题

当然可以设置默认返回值啦!你当前的代码之所以会报错,是因为当数据库里没有匹配的记录时,FirstOrDefault()会返回null,这时候直接访问匿名对象的qonv_fk_num_question属性就会触发空引用异常。下面给你几个简单有效的解决办法:

方案1:直接查询目标字段,用空合并运算符设默认值

把查询改成直接返回目标字段(而不是匿名类型),这样FirstOrDefault()会返回该字段类型的默认值,再用??运算符指定你想要的默认值:

var resultEthnie = (from k in db.N_QONV 
                    where k.qonv_fk_numvol == clientId && k.qonv_fk_eon_id == 64 
                    select k.qonv_fk_num_question)
                   .FirstOrDefault();

return resultEthnie ?? 0; // 这里的0就是你要的默认值,可根据需求修改

方案2:保留匿名类型,先判断null再取值

如果你一定要用匿名类型返回结果,可以先检查FirstOrDefault()的返回值是否为null,再决定返回值:

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 } )
                   .FirstOrDefault();

// 如果结果不为空就取属性值,否则返回默认值0
return resultEthnie != null ? Convert.ToInt32(resultEthnie.qonv_fk_num_question) : 0;

方案3:用DefaultIfEmpty指定默认值

可以使用DefaultIfEmpty()方法,当查询结果为空时自动插入一个默认值,再用First()获取(这时候不会返回null):

var resultEthnie = (from k in db.N_QONV 
                    where k.qonv_fk_numvol == clientId && k.qonv_fk_eon_id == 64 
                    select k.qonv_fk_num_question)
                   .DefaultIfEmpty(0) // 提前设置空结果时的默认值
                   .First();

return resultEthnie;

这几个方案都能完美解决你的问题,选哪个看你代码的实际场景就好~

内容的提问来源于stack exchange,提问作者KOMARA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:27:37