按嵌套列表标识符分组
本文关键字:标识符 列表 嵌套 | 更新日期: 2023-09-27 18:27:30
我有一个对象如下:
class ObjectParent
{
public List<ObjectChild> ChildNumbers{ get; set; }
public int ParentId { get; set; }
}
class ObjectChild
{
public int ChildId { get; set; }
public string Property { get; set; }
}
我有一个List<ObjectParent>
对象,我需要通过ObjectChild
内的ChildId
对其进行分组
我该怎么做?
这就是我尝试的
var groupedItemDetails = itemDetails
.GroupBy(u => u.ChildNumbers.ChildId)
.Select(grp => grp.ToList())
.ToList();
您可以使用SelectMany来压平列表,然后按ChildId分组,如下所示:-
var result = parents.SelectMany(x => x.ChildNumbers, (parentObj, childnum) =>
new {
parentObj, childnum
})
.GroupBy(x => x.childnum.ChildId)
.Select(x => new
{
ChildId = x.Key,
Properties = x.Select(z => z.childnum.Property),
ParentIds = x.Select(z => z.parentObj.ParentId)
});
请检查我用一些示例数据创建的Fiddle。