我想填充一个包含属性的对象,该属性是另一个类的列表。我的问题是,如何初始化属性,是其他类的列表。这里的属性"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()
};