C# for 或 foreach 从列表创建数组

ari*_*rie 2 .net c#

循环列表、对每个元素执行某些操作并从这些项目创建数组的最优雅的方法是什么?

这两种解决方案都达到了目的,但是使用其中一种解决方案是否有优缺点,或者是否有更优雅的方法在 C# 中实现这一目标?

示例1:

public void SomeFunc(List<Person> lst)
{
    PersonPrivate[] arr = new PersonPrivate[lst.Count];
    int idx = 0;
    lst.ForEach(x =>
    {
        PersonPrivate p = new PersonPrivate(convert(p.name), convert(p.lastname));
        arr[idx] = p;
        idx++;
    }

    SavePerson(arr);
}
Run Code Online (Sandbox Code Playgroud)

示例2:

public void SomeFunc(List<Person> lst)
{
     PersonPrivate[] arr = new PersonPrivate[lst.Count];
     for (int i = 0; i < lst.Count; i++)
     {
         PersonPrivate p = new PersonPrivate(convert(p.name), convert(p.lastname));
         arr[i] = p;
     }

     SavePerson(arr);
}
Run Code Online (Sandbox Code Playgroud)

编辑:我不相信这个问题与标记为重复的问题完全相同。尽管该信息也提供了有用的信息,但比较不是在 for 和 foreach 之间进行的,也不是特定于从列表创建数组的。

Már*_*ssa 5

只需使用Select.

var arr = list
    .Select(p => new PersonPrivate(convert(p.name), convert(p.lastname)))
    .ToArray();
SavePerson(arr);
Run Code Online (Sandbox Code Playgroud)