如何在另一个类中填充一个类的列表

本文关键字:一个 列表 填充 另一个 | 更新日期: 2023-09-27 17:50:38

我想填充一个包含属性的对象,该属性是另一个类的列表。我的问题是,如何初始化属性,是其他类的列表。这里的属性"images"是一个类CenterShopImage的列表。

    {    
       ID = c.ID,
       address = c.address,
       category = new Model.CenterShopCat
       {
           ID = c.CenterShopCat.ID,
           name = c.CenterShopCat.name
       },
       floorNumber = c.floorNumber,
       images = new List (CenterShopImage) 
       {
           //what should i do here?????
       },
   };

谢谢。


har07和mjshaw谢谢你的回答,但我不知道有多少CenterShopImage存在!类Centershop有一个list属性。它是CenterShopImage类的列表。所以它们之间是有联系的。每个CenterShop都有一些图像。现在我想选择与centerShop有关系的图像,所以有一个foreach for all CenterShopIamge,选择其中一些它们的id等于centerShopImageID。

如何在另一个类中填充一个类的列表

我可能是误解了,但我相信你是在问如何初始化列表,而不需要典型的"new list()"。试试下面的方法。我假设CenterShopImage的类型是:

{
    ID = c.ID,
    address = c.address,
    category = new Model.CenterShopCat
    {
        ID = c.CenterShopCat.ID,
        name = c.CenterShopCat.name
    },
    floorNumber = c.floorNumber,
    images = new List<CenterShopImage>() 
    {
        new CenterShopImage{...},
        new CenterShopImage{...},
        ...
    },
};

答案取决于您的需求。如果您不需要设置任何内容,只需删除该部分:

images = new List<CenterShopImage>()

或使用另一个接受IEnumerable<CenterShopImage>的构造函数,如果您有CenterShopImage的初始集合要添加:

images = new List<CenterShopImage>(myInitialCollection)

如果你想向列表中添加新项,而不是准备添加集合,你可以使用集合初始化语法:

images = new List<CenterShopImage>()
                {
                    new CenterShopImage
                        {
                            propertyA = "value1"
                        },
                    new CenterShopImage
                        {
                            propertyA = "value2"
                        },
                }

只需从"c"的所需属性中选择所需的类型。我不知道"c"持有什么类型的图像,也不知道如何从该类型创建CenterShopImage,但在这个例子中,我假设你有一个接受c类型作为参数的CenterShopImage构造函数。

{
   D = c.ID,
   address = c.address,
   category = new Model.CenterShopCat
     {
       ID = c.CenterShopCat.ID,
       name = c.CenterShopCat.name
     },
   floorNumber = c.floorNumber,
   images = c.Images.Select(img=>new CenterShopImage(img).ToList()
};