我有一个可枚举的列表,其中包含一个扁平的父子关系:
ParentGuid1, ParentName1, ChildGuid1, ChildName1
ParentGuid1, ParentName1, ChildGuid2, ChildName2
ParentGuid2, ParentName2, ChildGuid3, ChildName3
ParentGuid2, ParentName2, ChildGuid4, ChildName4
我定义了一个Child类和一个Parent类,其中包括一个名为Children的
List<Child>
属性。我可以使用linq在对象图上创建每个唯一的ParentGuid的Parent类的一个实例,并引用由与该父级关联的子级填充的List。
类似于以下内容(请注意,此代码无法编译):
myFlattenedHierarchy.Select(p => new Parent
{Guid = p.ParentGuid,
Name = p.ParentName,
Children = myFlattenedHierarchy.Where(c => c.ParentGuid == p.ParentGuid).Select(c => new Child{Guid = c.ChildGuid, Name = c.ChildName})
});
最佳答案
myFlattenedHierarchy.Select(p => new Parent
{Guid = p.ParentGuid,
Name = p.ParentName,
Children = myFlattenedHierarchy.Where(c => c.ParentGuid == p.ParentGuid).Select(c => new Child{Guid = c.ChildGuid, Name = c.ChildName})
});
您应该能够做到,但是
Children
不能是List,它必须是IEnumerable
。关于c# - 展平表到父对象和子对象图中的Linq投影,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7598291/