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

如何展平Lookup<TKey,TValue>为保留关联键的键值对

问题原因

Lookup<TKey, TValue>的组成单元是IGrouping<TKey, TValue>,每个单元自带Key属性存储当前分组对应的关联键。直接调用lookup.SelectMany(x => x)时,投影逻辑仅返回分组下的值集合,没有映射分组的Key属性,因此会丢失值和键的关联关系。

实现方案

在SelectMany内部对单个分组做二次投影,将分组键和分组下的值绑定后输出,即可保留完整关联关系。

  • 若需要输出标准键值对结构,可使用如下写法:
var flattenedKeyValuePairs = lookup
    .SelectMany(group => group
        .Select(value => KeyValuePair.Create(group.Key, value))
    );
  • 若偏好轻量的元组结构,可调整投影逻辑为:
var flattenedTuples = lookup
    .SelectMany(group => group
        .Select(value => (Key: group.Key, Value: value))
    );

上述写法的核心逻辑是:外层遍历Lookup的全部分组,内层遍历单个分组下的所有值,组装元素时直接读取当前分组的Key属性与值绑定,最终输出的平展集合中,每个元素都携带值对应的原始关联键,不会出现关联关系丢失的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:27:13