C# 创建父级->;来自两个集合的子层次结构
我有两个单独的集合实例,其中充满了数据C# 创建父级->;来自两个集合的子层次结构,c#,linq,.net-4.5,linq-to-objects,C#,Linq,.net 4.5,Linq To Objects,我有两个单独的集合实例,其中充满了数据 List<Parent> parents; List<Child> children; 列出父母; 列出儿童名单; 可以通过Child.ParentId和Parent.Children连接两个集合 parents集合没有填充Children属性,因此如何将父对象与子对象链接?尝试以下操作: var result = from d in parents join s in children
List<Parent> parents;
List<Child> children;
列出父母;
列出儿童名单;
可以通过Child.ParentId和Parent.Children连接两个集合
parents集合没有填充Children属性,因此如何将父对象与子对象链接?尝试以下操作:
var result = from d in parents
join s in children
on d.ParentID equals s.ParentID into g
select new
{
ParentName = d.ParentName,
ChildList = g
};
foreach (var item in result)
{
Console.WriteLine("Parent: {0}", item.ParentName);
foreach (var Child in item.ChildList)
{
Console.WriteLine(Child.Name);
}
Console.WriteLine();
}
更新
var result = parents.Join(children,
p => p.ParentId,
c => c.ParentId,
(p,c) => new { parents = p,children = c })
.Select(x => new
{
ParentName = x.parents.ParentName,
ChildList= x.children
})
//.GroupBy(x=>x.ParentName )
.ToList();
嗨,谢谢你的快速回复。需要明确的是,这是一个左联接操作,没有子项的父项仍将存在?这是分组联接,当我们需要分层数据结构时使用,是的,没有子项的父项将存在。@goran-这段代码将只提供gv me父项数据吗?基于连接,这会提供层次结构吗??
var result = parents.Join(children,
p => p.ParentId,
c => c.ParentId,
(p,c) => new { parents = p,children = c })
.Select(x => new
{
ParentName = x.parents.ParentName,
ChildList= x.children
})
//.GroupBy(x=>x.ParentName )
.ToList();