如何根据 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<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);
...
【讨论】:
您好,正如您所说,我发现了我的错误。(是的,应该是 Dictionary以上是关于如何根据 c# 中的以下分组产品类别显示我的回复的主要内容,如果未能解决你的问题,请参考以下文章
在C#中进行DataTable操作:根据列数据插入一些汇总行