我有一个如下对象:
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>
obj,我需要按ChildId
内的ObjectChild
进行分组
我该怎么办?
这是我试过的
var groupedItemDetails = itemDetails
.GroupBy(u => u.ChildNumbers.ChildId)
.Select(grp => grp.ToList())
.ToList();
答案 0 :(得分:1)
您可以使用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。