首页 > 解决方案 > 添加列表作为对象的属性

问题描述

有一个这样的对象数组:

List<object> myArray = new List<object>();

myArray = [{name = "abc", id = 1},
           {name = "xxx", id = 2},
           {name = "abc", id = 3},
    ];

我希望如果有更多具有相同名称的对象将它们组合成一个对象并将 ID 保存到列表中。对于上面的数组,期望的结果应该是这样的:

myArray = [{name = "abc", (id = 1, id = 3)},
           {name = "xxx", id = 2},
    ];

也许这不是这样做的最佳方式。我想找出任何有用的建议。

标签: c#arrayslistobject

解决方案


只需根据Name-property 对数据进行分组:

var result = myList.GroupBy(x => x.Name).Select(x => new 
    { 
        Name = x.Key, 
        Ids = x.Select(y => y.id).ToList()
    });

推荐阅读