如何从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
相关产品推荐
相关产品推荐

