如何在c#中按照分组的产品类别显示我的响应?



这是我在提供商类

中的方法
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。(我。(分类1,分类2,分类3)我想把我的回答显示如下。(响应必须按产品类别分开)

{
"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)

任何帮助都是感激的。

谢谢。

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

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

...
if (isSplitVersion)
{
var distinctProductCat = response
.GroupBy(x => x.PRODUCT_CATEGORY)
.ToDictionary(x => x.Key, x => x.ToList());
return productReportMapper.Map(distinctProductCat);
}
...

最新更新