You need to enable JavaScript to run this app. 如何处理Lambda查询返回的null值以规避空引用异常
优惠活动
大模型
产品
解决方案
定价
更多

如何处理Lambda查询返回的null值以规避空引用异常

Lambda查询空值安全处理方案

异常触发原因

你遇到的空引用异常并非Any方法无匹配元素导致:Any方法本身在集合无匹配项时只会返回false,不会抛出异常。触发异常的常见场景有三类:

  • users集合本身为null
  • 集合中存在值为null的元素x
  • 元素的userId属性为null,调用ToString()时触发空引用

空安全写法示例

基础适配写法(C# 6及以上版本支持)

使用空条件运算符?.处理所有可能为null的调用节点:

// 可空布尔类型需显式与true比对,避免隐式转换异常
if (users?.Any(x => x?.userId?.ToString() == id) == true)
{
    var user = _users.First(x => x?.userId?.ToString() == id);
    _users.Remove(user);
}
// 补充user实体初始化逻辑后再执行Add操作
_users.Add(user);

优化写法(减少集合遍历次数)

无需分开执行Any和First两次遍历,直接用FirstOrDefault单次查询即可:

var targetUser = users?.FirstOrDefault(x => x?.userId?.ToString() == id);
if (targetUser != null)
{
    _users.Remove(targetUser);
}
// 完成user实体初始化逻辑
_users.Add(user);

注意事项

  • 空条件运算符?.在左侧值为null时会直接返回null,不会执行后续的成员调用,从根源避免空引用异常
  • 你原代码中_users.Add(user)的user变量如果仅在if块内定义,当if条件不成立时user未赋值,调用Add也会触发空引用异常,建议提前完成实体初始化逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:06:02