如何根据 c# 中的以下分组产品类别显示我的回复

Posted

技术标签:

【中文标题】如何根据 c# 中的以下分组产品类别显示我的回复【英文标题】:How can I display my response according to the grouped product categories as below in c# 【发布时间】:2021-12-02 04:34:23 【问题描述】:

这是我在提供者类中的方法

public async Task<List<ProductSummary>> GetProductDetails(string pId, bool isSplitVersion)

    var response = await dbAccess.GetProductDetailsReport(pId);

    List<ProductSummary> ProdList = new List<ProductSummary>();
    if (isSplitVersion)
    

        var distinctProductCat = response.GroupBy(x => x.PRODUCT_CATEGORY);
        foreach (var productCategory in distinctProductCat)
        

            foreach (var item in productCategory)
            


                ProdList.Add(item);


            
            return productReportMapper.Map(ProdList);

            


        

    
    return productReportMapper.Map(response);
    

当 isSplitVersion 为真时,产品按产品类别分组,并将分配给 distinctProductCat 。(即 category1,category2,category3)我希望如下所示显示我的响应。(响应必须由产品类别分隔)

    
    "Value": 
        "category1": [
            
                ...
                "Product Name": "ABC",
                "Product Category": "category1"
                ...
            
        ],


       "category2": [
            
                 ...
                 "Product  Name": "EFG",
                 "Product Category": "category2"
                 ...
            ,
            
                 ...
                 "Product  Name": "XYZ",
                 "Product Category": "category2"
                 ...
            ,
            
                 ...
                 "Product  Name": "SDF",
                 "Product Category": "category2"
                 ...
            
        ],
     "category3": [
            
                 ...
                 "Product  Name": "BNV",
                 "Product Category": "category3"
                 ...
            ,
            
                  ...
                 "Product  Name": "DFG",
                 "Product Category": "category3"
                 ...
            
        ]

    ,
    "Formatters": [],
    "ContentTypes": [],
    "DeclaredType": null,
    "StatusCode": 200

从我实施的方法来看,我没有得到预期的响应。如何在提供程序类中调整我的代码以获得上述响应。(目前我的响应中只得到类别 1。我没有得到类别 2 和 3)

感谢任何帮助。

谢谢。

【问题讨论】:

你能发布你的课程吗? @Serge 我有很多类,每个类中有很多相互关联的方法,这就是为什么我刚刚发布了调试后出现问题的方法。据我所知,我遇到了问题使用 return 语句的位置。因为它正确返回类别 1 中的所有项目,但不会循环到类别 2 并在新数组中显示其项目。但是我将所有不同的类别都添加到“distinctProductCat”变量中在 groupby 之后。 【参考方案1】:

你的问题是你只检查了你的第一个 for loop (foreach (var productCategory in distinctProductCat)) 一次,因为你在第一次运行后返回 - return productReportMapper.Map(ProdList);

在我看来你需要Dictionary&lt;string, List&lt;ProductSummary&gt;&gt; 而不是List&lt;ProductSummary&gt;, 而且我不确定productReportMapper.Map() 内部会发生什么,如果你需要它,因为你没有添加它,但我认为你想做这样的事情:

...
if (isSplitVersion)

   var distinctProductCat = response
      .GroupBy(x => x.PRODUCT_CATEGORY)
      .ToDictionary(x => x.Key, x => x.ToList());

   return productReportMapper.Map(distinctProductCat);

...

【讨论】:

您好,正如您所说,我发现了我的错误。(是的,应该是 Dictionary>)将我的方法编辑为 ***.com/questions/69606013/…..

以上是关于如何根据 c# 中的以下分组产品类别显示我的回复的主要内容,如果未能解决你的问题,请参考以下文章

在C#中进行DataTable操作:根据列数据插入一些汇总行

我如何更好地在 woocommerce rest api 中按类别对产品进行分组?

迭代meteorjs中嵌套的每个语句(按类别分组)

如何根据产品类别拆分 woocommerce 购物车页面

徒手撸出一个类Flask微框架根据业务进行路由分组

如何在 Django 中按类别筛选产品?