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

求助:将扁平List转换为四层嵌套Dictionary的多属性分组实现

解决扁平List转四层嵌套字典的问题

看起来你卡在把扁平列表转成四层嵌套字典这一步了,我之前也处理过类似的多层分组需求,给你一个直接可行的方案:

首先先补全一下你的ApprovalAction类(假设你还有另外两个用于分组/取值的属性,你可以根据实际业务替换成自己的字段):

public class ApprovalAction
{
    public string Name { get; set; }
    public string Step { get; set; }
    public string ApprovalRequestType { get; set; }
    public string ThirdGroupKey { get; set; } // 替换成你实际的第三层分组属性
    public string TargetValue { get; set; } // 替换成你实际要存储的字符串值
}

接下来用Linq逐层分组并转换为字典,完全匹配你需要的Dictionary<string,Dictionary<string,Dictionary<string,Dictionary<string,string>>>>类型:

var approvalActions = Gen();

var nestedDictionary = approvalActions
    // 第一层:按Step分组,转成以Step为键的字典
    .GroupBy(action => action.Step)
    .ToDictionary(
        stepGroup => stepGroup.Key,
        stepGroup => stepGroup
            // 第二层:在每个Step分组内,按ApprovalRequestType分组
            .GroupBy(action => action.ApprovalRequestType)
            .ToDictionary(
                typeGroup => typeGroup.Key,
                typeGroup => typeGroup
                    // 第三层:在每个ApprovalRequestType分组内,按第三个属性分组
                    .GroupBy(action => action.ThirdGroupKey)
                    .ToDictionary(
                        thirdGroup => thirdGroup.Key,
                        // 第四层:转成以Name为键、目标字符串为值的字典
                        thirdGroup => thirdGroup.ToDictionary(action => action.Name, action => action.TargetValue)
                    )
            )
    );

注意事项:

  • 如果存在重复的层级键(比如同一个Step→ApprovalRequestType→ThirdGroupKey→Name组合出现多次),ToDictionary会抛出异常。这时候你可以根据需求处理:
    • 取第一个匹配的值:thirdGroup.ToDictionary(action => action.Name, action => action.TargetValue.First())
    • 合并重复值:thirdGroup.ToDictionary(action => action.Name, action => string.Join(";", action.TargetValue))
  • 你可以把代码里的ThirdGroupKey和TargetValue替换成你实际业务中对应的属性,只要保证每一层的键是字符串类型、最终值是字符串类型即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:26:07