首页 > 解决方案 > 将父母名单与子女名单合并

问题描述

有没有办法使用 Linq 将父对象列表与子对象列表结合起来,以便父列表包含具有相同 ID 的子对象?

我有一个没有孩子的父母列表和一个单独的孩子列表,并希望将它们组合起来,以便父母列表中的孩子包含在适当的父母中。

public class Parent
{
    public int Id { get; set; }
    public virtual List<Children> Children { get; set; }
}

public class Children
{
    public int Id { get; set; }
    public int ParentId { get; set; }
}

标签: c#entity-frameworklinq

解决方案


如果我理解正确,您有两个列表,如下所示:

List<Parent> parents;
List<Children> children;

然后,您可以将父级与子级连接起来,以创建附加了子级的新 Parent 对象:

var newParents = parents.GroupJoin(
     children, 
     parent => parent.Id, 
     child => child.ParentId, 
     (parent, children) => new Parent { Id = parent.Id, Children = children.ToList() });

推荐阅读