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

C#如何按产品分类分组返回指定结构的接口响应数据

问题根因

  • 你的return语句放在了分类遍历的foreach循环内部,处理完第一个分类后就直接返回结果,导致后续分类数据全部丢失
  • 当前方法的返回类型是List<ProductSummary>,和你期望的「分类名称为键、对应产品列表为值的键值对结构」不匹配,即使调整返回位置也无法得到目标响应格式

修复后的代码

// 首先修改方法返回类型,适配分组后的字典结构
public async Task<Dictionary<string, List<ProductSummary>>> GetProductDetails(string pId, bool isSplitVersion)
{
    var response = await dbAccess.GetProductDetailsReport(pId);

    if (isSplitVersion)
    {
        // 直接按分类分组后转字典,无需手动循环遍历添加
        return response
            .GroupBy(x => x.PRODUCT_CATEGORY)
            .ToDictionary(
                group => group.Key,
                group => productReportMapper.Map(group.ToList())
            );
    }

    // 不拆分的场景统一放在默认key下,你也可以根据业务需求调整这部分逻辑
    return new Dictionary<string, List<ProductSummary>>
    {
        { "Default", productReportMapper.Map(response) }
    };
}

补充说明

  • 调整后返回的字典结构序列化后,会自动匹配你期望的Value下按分类做key的响应格式
  • 如果你的mapper支持直接映射IEnumerable<源类型>,可以去掉group.ToList()的调用优化性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:27:03