LINQ - 受け渡し

class MekaModel
{
    public string Name { get; set; }

    public List<BukiModel> BukiList { get; set; }
}

class BukiModel
{
    public string Name {get; set;}

    public List<OptionModel> OptionList { get; set; }
}

class OptionModel
{
    public string Name {get; set;}
}


static void Main(string[] args)
{
    MekaModel m = new MekaModel()
    {
        Name = "Robo",
        BukiList =  new List<BukiModel>()
        {
            new BukiModel()
            {
                Name = "Sword",
                OptionList = new List<OptionModel>()
                {
                    new OptionModel(){ Name = "op1"},
                    new OptionModel(){ Name = "op2"}
                }
            },
            new BukiModel()
            {
                Name = "Gun",
                OptionList = new List<OptionModel>()
                {
                    new OptionModel(){ Name = "op3"},
                    new OptionModel(){ Name = "op4"}
                }
            },
        },
    };
    
    var m2 = new MekaModel()
    {
        Name = m.Name,
        BukiList = m.BukiList.Select(a => new BukiModel()
        {
            Name = a.Name,
            OptionList = a.OptionList.Select(b => new OptionModel()
            {
                Name =  b.Name
            }).ToList(),
        }).ToList(),
    };
}