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

C# 10如何更新嵌套List对象内字符串列表为去重值

异常根因

你之前的代码抛出类型转换异常的原因非常明确:LINQ的Distinct()方法返回值是IEnumerable<string>类型的延迟迭代器,不是List<string>实例,直接做强制类型转换必然失败。

修复方案

只需要在Distinct()调用后追加ToList()方法,将去重后的序列显式转换为List<string>类型再赋值即可,该写法完全兼容C# 10版本,同时建议补充空值判断避免空引用异常:

vulnerabilitiesScanList.ForEach(x =>
{
    if (x.AssetName != null)
    {
        x.AssetName = x.AssetName.Distinct().ToList();
    }
});
补充说明
  • Distinct()方法默认会保留元素首次出现的顺序,去重后不会打乱原有资产名的排列顺序。
  • 如果需要做忽略大小写的去重,可以传入字符串比较器:
    // 忽略大小写去重
    x.AssetName = x.AssetName.Distinct(StringComparer.OrdinalIgnoreCase).ToList();
    
  • 所有LINQ方法返回的IEnumerable<T>类型结果,都不能直接强转为List<T>,必须通过ToList()方法做显式转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:31:21