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

使用LINQ查询时CountrySearch属性突然为空引发空引用异常

LINQ查询空引用异常排查与解决

问题根源

你的Countries列表里至少存在一个Port对象,它的CountrySearch属性是null。当LINQ遍历到这个对象时,调用x.CountrySearch.ToLower()就会触发空引用异常——因为null无法调用任何实例方法。

解决方案

方案1:显式判空后执行操作

先检查CountrySearch不为null,再进行大小写转换和包含判断,同时提前处理search可能为null的情况:

private List<Port> DoCountriesSearch(string search)
{
    var lowerSearch = search?.ToLower() ?? string.Empty;
    return Countries.Where(x => x.CountrySearch != null 
                               && x.CountrySearch.ToLower().Contains(lowerSearch)).ToList();
}

方案2:使用空传播运算符简化判空

利用C# 6及以上版本的空传播运算符?.,简化空值判断逻辑:

private List<Port> DoCountriesSearch(string search)
{
    var lowerSearch = search?.ToLower() ?? string.Empty;
    return Countries.Where(x => x.CountrySearch?.ToLower().Contains(lowerSearch) == true).ToList();
}

补充说明

你之前没遇到该问题,大概率是之前的Countries列表中所有Port的CountrySearch都有有效值,这次数据加载或初始化时混入了CountrySearch为null的对象。可以检查数据源的初始化逻辑,确认是否有数据遗漏或赋值错误的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:50:44