You need to enable JavaScript to run this app. 如何将IList<KeyValuePair<long, string>>类型集合追加到另一同类型集合
优惠活动
大模型
产品
解决方案
定价
更多

如何将IList<KeyValuePair<long, string>>类型集合追加到另一同类型集合

解决方案

问题根源:AddRange() 是 List<T> 类独有的方法,你当前 Assessments1 是用 IList<T> 接口声明的,接口层面没有定义这个方法,所以无法直接调用。以下是3种可落地的实现方案:

方案1:遍历逐个添加(最通用,无依赖)

直接循环 Assessments2 中的每一项,调用 IList<T> 自带的 Add() 方法追加即可,兼容性最好,不管 Assessments1 实际是哪种 IList<T> 实现都可以正常运行:

foreach (var item in Assessments2)
{
    Assessments1.Add(item);
}

方案2:强转后调用AddRange(性能最优)

你代码里 Assessments1 的实际实例就是 List<KeyValuePair<long, string>> 类型,可以安全强转之后调用原生 AddRange 方法,性能比逐个添加更高:

((List<KeyValuePair<long, string>>)Assessments1).AddRange(Assessments2);

注意:该方案只适合明确知道 IList 实际类型是 List<T> 的场景,避免强制转换抛出异常。

方案3:自定义扩展方法(适合多次复用场景)

如果项目里有多处需要给 IList<T> 批量添加元素的需求,可以自己封装一个扩展方法,一劳永逸:

public static class ListExtensions
{
    public static void AddRange<T>(this IList<T> list, IEnumerable<T> items)
    {
        if (list == null) throw new ArgumentNullException(nameof(list));
        if (items == null) throw new ArgumentNullException(nameof(items));
        
        foreach (var item in items)
        {
            list.Add(item);
        }
    }
}

封装完成后就可以直接像调用List原生方法一样使用:

Assessments1.AddRange(Assessments2);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 10:54:05