如何通过linq填写另一个类的类列表

时间:2014-03-16 08:08:12

标签: c# linq linq-to-sql

我想填充一个包含proprty的对象,该proprty是另一个类的列表。我的问题是如何初始化其他类列表的proprty。这里是proprty" 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感谢您的answare,但我不知道有多少CenterShopImage存在! 中心商店有一份清单。它是CenterShopImage类的列表。所以他们之间有关系。每个CenterShop都有一些图像。现在我想选择与centerShop有关的图像,因此所有CenterShopIamge都有一个foreach,它选择其中一些id等于centerShopImageID的中心。请帮帮我。

3 个答案:

答案 0 :(得分:1)

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

images = new List<CenterShopImage>()
如果您要添加IEnumerable<CenterShopImage>的初始集合,请

或使用接受CenterShopImage的{​​{3}}:

images = new List<CenterShopImage>(myInitialCollection)

如果要将新项目添加到列表而不是准备添加集合,可以使用集合初始化程序语法:

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

答案 1 :(得分:1)

我可能会误解,但我相信你问的是如何初始化一个列表,没有典型的“新列表()”。尝试以下方法。我假设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{...},
        ...
    },
};

答案 2 :(得分:0)

只需从&#34; c&#34;所需的属性中选择所需的类型。 我不知道是什么类型的图像&#34; c&#34;保持或如何从该类型创建CenterShopImage,但在此示例中,我假设您有一个CenterShopImage构造函数,它接受c类型作为参数。

{
   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()
};