在初始值设定项块内传递调用对象

本文关键字:调用 对象 | 更新日期: 2023-09-27 17:59:27

我正在使用Select() linq语句创建一个具有Child集合的IEnumerable<Parent>。我希望能够在启动器块内将Parent传递给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?
            }
    });

在初始值设定项块内传递调用对象

不能这样做,因为在Select实例化子对象时,Parent对象尚未初始化。从本质上讲,这是一个鸡和蛋的问题。

但是,您可以使用带大括号的委托,如下所示:

x => {
    var p = new Parent();
    p.Children = x.childList.Select(
        c => new Child { Parent = p }
    );
    return p;
}