首页 > 解决方案 > 如何将对象添加到另一个对象的集合中?

问题描述

如何将对象添加到 ICollection 属性?我需要先初始化 ICollection 吗?如果有怎么办?

我有一个“foo”类,它有一个ICollection<bar>名为“bar”的属性。我还有一个单独的包含反序列化 excel 数据的对象集合。我想ICollection<bar> bar使用这些数据填充属性。

假设我有一个foo名为 'fooexample' 的实例,那么我试图ICollection<bar> bar通过使用 'fooexample.bar.id' 为 'fooexample.bar.id' 分配一个值,但我知道这在语法上是不正确的。

类 foo

public class foo 
{     
    public int id { get; set; }
    public string name { get; set; } 
    public ICollection<bar> bar { get; set; }
}

类吧

public class bar 
{
    public int id { get; set; }
    public string name{ get; set; } 
}

从另一个对象添加对象

exceldata = ParseDocument.Parse(filestream);
foo fooexample = new foo();
foreach (var object in exceldata)
{
    fooexample.id = object.id;
    fooexample.bar.id = object.bar.id; 
    // <-- how do I do this? if I need to initialize it, how?
}

标签: c#objectcollections

解决方案


我的印象是您实际上并不需要收藏,因此您可以执行以下操作。

类 foo

public class foo 
{     
    public int id { get; set; }
    public string name { get; set; } 
    public bar bar { get; set; }
}

从另一个对象添加对象

exceldata = ParseDocument.Parse(filestream);
foo fooexample = new foo();
foreach (var object in exceldata)
{
    fooexample.id = object.id;
    fooexample.bar = new bar();
    fooexample.bar.id = object.bar.id;
}

C# 中有一个速记来实例化一个对象并将它的属性设置在一行上,这样你就可以有

exceldata = ParseDocument.Parse(filestream);
foo fooexample = new foo();
foreach (var object in exceldata)
{
    fooexample.id = object.id;
    fooexample.bar = new bar({id = object.bar.id});
}

或使用集合

类 foo

public class foo 
{     
    public int id { get; set; }
    public string name { get; set; } 
    public ICollection<bar> bar { get; set; }
}

从另一个对象添加对象

exceldata = ParseDocument.Parse(filestream);
foo fooexample = new foo();
fooexample.bar = new List<bar>();
foreach (var object in exceldata)
{
    fooexample.id = object.id;
    fooexample.bar.Add(new bar({id = object.bar.id}));
}

正如其他人所指出的,您也可以在“foo”类中初始化列表。


推荐阅读