我正在使用IEnumerable<Parent>
linq语句创建一个Child
集合Select()
。我希望能够在启动器块内传递Parent to Child。
class Parent
{
IEnumerable<Child> Children { get; set; }
}
class Child
{
Parent Parent { get; set; }
}
//This is what i want to do
someList.Select(x => new Parent
{
Children = x.childList.Select(c => new Child
{
Parent = //How do i get this?
}
});
答案 0 :(得分:1)
你不能这样做,因为在Select
实例化子对象时,Parent
对象尚未初始化。从本质上讲,这是一个鸡与蛋的问题。
但是,您可以使用花括号的委托,如下所示:
x => {
var p = new Parent();
p.Children = x.childList.Select(
c => new Child { Parent = p }
);
return p;
}