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

如何在LINQ中返回Null?解决空参数引发的异常问题

解决方案

问题出在当type为null时,调用string.Contains(null)会抛出ArgumentNullException;另外如果列表中的元素x本身是null,调用x.Contains也会触发空引用异常。要实现“找不到对应值时返回null”且避免异常,你可以修改LINQ表达式,同时处理type和列表元素的null情况:

var ismatch = list.FirstOrDefault(x => 
    (type == null && x == null) || 
    (type != null && x != null && x.Contains(type)));

if (ismatch != null)
{
    // 找到匹配项的逻辑
}
else 
{
    // 未找到匹配项的逻辑
}

逻辑说明

  • 当type为null时,匹配列表中第一个为null的元素;
  • 当type不为null时,先确保列表元素x不为null,再调用x.Contains(type)进行匹配;
  • 无论哪种情况,当没有匹配到任何元素时,FirstOrDefault都会返回null,完全符合你的需求。

你也可以拆分成更易读的分支写法:

var ismatch = type == null 
    ? list.FirstOrDefault(x => x == null) 
    : list.FirstOrDefault(x => x != null && x.Contains(type));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:37:04