按嵌套列表标识符分组

时间:2015-12-18 18:12:17

标签: c# linq

我有一个如下对象:

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();

1 个答案:

答案 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