按嵌套列表标识符分组

本文关键字:标识符 列表 嵌套 | 更新日期: 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。