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

如何从Dictionary<int, List<T>>类型字典中获取单个键对应的多个值

解决方案

根据你需要的输出结构,可选择以下两种实现方式:

方案1:保留原键唯一,值存储两个id

如果不需要拆分原字典的键,可将值类型调整为数组、值元组或列表,存储对应键下的所有id:

// 场景1:每个键固定存最小+最大两个id,值为值元组,方便按字段访问
Dictionary<int, (int Id1, int Id2)> selectedids = dicttoselect
    .ToDictionary(
        x => x.Key, 
        x => (x.Value.Min(i => i.id), x.Value.Max(i => i.id))
    );

// 场景2:直接取列表中所有id(适合原列表每个键固定只有2个元素的情况),值为int列表
Dictionary<int, List<int>> selectedids = dicttoselect
    .ToDictionary(
        x => x.Key, 
        x => x.Value.Select(i => i.id).ToList()
    );

方案2:拆分id为独立键值对

如果需要每个id对应一条独立记录,可使用Lookup(支持同键多值)或键值对列表存储:

// 生成支持同键多值的ILookup结构
ILookup<int, int> selectedids = dicttoselect
    .SelectMany(x => x.Value.Select(v => new KeyValuePair<int, int>(x.Key, v.id)))
    .ToLookup(kv => kv.Key, kv => kv.Value);

// 生成键值对列表
List<KeyValuePair<int, int>> selectedList = dicttoselect
    .SelectMany(x => x.Value.Select(v => new KeyValuePair<int, int>(x.Key, v.id)))
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:24:02