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

如何在LINQ查询的FirstOrDefault方法中获取逗号分隔的多个匹配值

报错原因

你当前触发FirstOrDefault报错的核心原因是:当x.cities存储多个逗号分隔的编码时,直接拿整串编码去和citieslst里的单个SelectedValue匹配,会找不到对应项,FirstOrDefault返回null,后续访问.DisplayValue就会触发空引用异常。

修复后的实现代码
lstRecords.ForEach(x =>
{
    // 拆分逗号分隔的城市编码为单个编码集合
    var cityCodeArr = x.cities.Split(',', StringSplitOptions.RemoveEmptyEntries);
    // 逐个匹配编码对应的城市名,过滤匹配失败的空结果
    var cityNameArr = cityCodeArr
        .Select(code => citieslst.FirstOrDefault(ch => ch.SelectedValue == code)?.DisplayValue)
        .Where(name => !string.IsNullOrEmpty(name));
    // 拼接为逗号分隔的城市名字符串
    x.SelectedCities = string.Join(',', cityNameArr);
});
逻辑说明
  • 调用Split方法拆分编码时添加StringSplitOptions.RemoveEmptyEntries参数,可自动过滤首尾逗号、连续逗号产生的无效空编码
  • 匹配城市名时添加?.空值传播运算符,避免编码不存在时触发空引用异常
  • 增加Where过滤逻辑,可把匹配不到的无效编码对应的空值剔除,避免最终结果出现多余的空内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:36:02