首页 > 解决方案 > 根据 c# linq 输出分组

问题描述

我有一个数组,如下所示,我试图分组并返回结果

{CategoryName: 'Grounding', SubCategoryId: 4, SubCategoryName: 'While drifting'}
{CategoryName: 'Grounding', SubCategoryId: 5, SubCategoryName: 'While making way'}
{CategoryName: 'Grounding', SubCategoryId: 6, SubCategoryName: 'At anchor/alongside'}

我使用以下代码进行分组

function groupBy(objectArray, property) {
  return objectArray.reduce((acc, obj) => {
    const key = obj[property];
    if (!acc[key]) {
      acc[key] = ["RC"];
    }
    // Add object to list for given key's value
    acc[key].push(obj);
    return acc;
  }, {});
}
const groupedPeople = groupBy(data, 'CategoryName');
console.log(groupedPeople);

这给了我以下输出

{   Grounding: [{   CategoryName: "Grounding",   SubCategoryId: 4,  
SubCategoryName: "While drifting" }, {   CategoryName: "Grounding",  
SubCategoryId: 5,   SubCategoryName: "While making way" }, {  
CategoryName: "Grounding",   SubCategoryId: 6,   SubCategoryName: "At
nchor/alongside" }] }

是否有可能获得如下输出,我使用 linq 从我的 C# 代码中获得

CategoryName: "Grounding"
RC:
0: {SubCategoryId: 4, SubCategoryName: 'While drifting', CategoryName: 'Grounding'}
1: {SubCategoryId: 5, SubCategoryName: 'While making way', CategoryName: 'Collision'}
2: {SubCategoryId: 6, SubCategoryName: 'At anchor/alongside', CategoryName: 'Collision'}

标签: jquery

解决方案


好的,这就是我得到的,可能对某人有帮助

function groupBy(objectArray, property) {
  return objectArray.reduce((acc, obj) => {
    const key = obj[property];
    if (!acc["CategoryName"]) acc["CategoryName"] = key;
    if (acc.CategoryName === key) acc.RC.push(obj)
    return acc;
  }, {"RC":[]});
}
const groupedPeople = groupBy(data, 'CategoryName');
console.log(groupedPeople);

推荐阅读