我正在尝试向数组添加元素。
public SoftwareInfoDTO[] GetAllInfo(IPrincipal principal)
{
Checks.Checks.CheckPrincipal(principal);
using (var context = new Context(ConnectionString))
{
var allInfo = context.Softwares;
SoftwareInfoDTO[] softInfoArray = new SoftwareInfoDTO[] {};
foreach (var elem in allInfo)
{
SoftwareInfoDTO softInfo = new SoftwareInfoDTO
{
Id = elem.Id,
Name = elem.Name
};
softInfoArray.??? <---- NO IDEA
}
return softInfoArray;
}
}
我的想法是调用像“插入”这样的方法将元素添加到我的数组中,但我找不到有用的东西。
然后我在这里实现了代码写,这段代码可以工作,但我不太喜欢它,我可以只使用没有List支持的数组吗?
非常感谢。
public SoftwareInfoDTO[] GetAllInfo(IPrincipal principal)
{
Checks.Checks.CheckPrincipal(principal);
using (var context = new Context(ConnectionString))
{
var allInfo = context.Softwares;
IList<SoftwareInfoDTO> softInfoArray = new List<SoftwareInfoDTO>();
foreach (var elem in allInfo)
{
SoftwareInfoDTO softInfo = new SoftwareInfoDTO
{
Id = elem.Id,
Name = elem.Name
};
softInfoArray.Add(softInfo);
}
return softInfoArray.ToArray();
}
}
答案 0 :(得分:3)
数组不实现IList
,因此使.Add()
等方法不可用。数组具有固定大小,因此如果您知道确切的大小,则可以在指定的索引中插入对象。实际上,这种情况很少发生。
如果我必须实现这一点,我将使用 Linq 并使用Select
遍历初始集合,以便为集合的每个成员创建一个新对象,使用IEnumerable<T>
(在您的情况下为T
将为SoftwareInfoDTO
),您可以轻松将其转换为数组。
例如:
return allInfo.Select(elem =>
new SoftwareInfoDTO
{
Id = elem.Id,
Name = elem.Name
}).ToArray();
答案 1 :(得分:0)
使用数组时,必须在启动时设置数组的大小。
以下是您希望使用List<T>
https://stackoverflow.com/a/434765/2195005