我有一个可枚举的列表,其中包含一个扁平的父子关系:

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/

10-11 15:57