c# - 如何将对象添加到另一个对象的集合中?
问题描述
如何将对象添加到 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?
}
解决方案
我的印象是您实际上并不需要收藏,因此您可以执行以下操作。
类 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”类中初始化列表。
推荐阅读
- python - Django-Channels 中的类型错误
- excel - 如果未选择框架中的选项按钮,如何突出显示框架?
- javascript - 代码块在 mozilla firefox 中工作,但在 Chrome 中不工作
- microsoft-graph-api - Azure AD B2C 应用程序不会显示为添加角色分配的选项。(图形 API)
- spring - NoSuchBeanDefinitionException : 没有符合条件的 bean 类型
- javascript - 有没有办法用 Javascript 变量替换 HTML 变量?
- filesystems - 删除磁盘后如何将磁盘添加回sysfs
- database - 跨同一表单的多个实例管理同一数据集类的多个实例的最佳方法是什么?
- android - 由于 gradle 错误,无法使用 Qt Creator 构建 APK
- c++ - 滚动文本在静态控件中被否定(C++ WinAPI)