将元素添加到C#数组

时间:2016-04-26 10:46:00

标签: c# arrays list element dto

我正在尝试向数组添加元素。

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

2 个答案:

答案 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

的原因的答案