关于.net:C#for或foreach从List创建数组

C# for or foreach to create array from List

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

这两种解决方案都有其作用,但是,使用一种解决方案优于另一种解决方案是否有优缺点,或者是否有一种更优雅的方法可以在C中实现这一点?

例1:

1
2
3
4
5
6
7
8
9
10
11
12
13
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);
}

例2:

1
2
3
4
5
6
7
8
9
10
11
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);
}

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


是的Select使用。 </P >

1
2
3
4
var arr = list
    .Select(p => new PersonPrivate(convert(p.name), convert(p.lastname)))
    .ToArray();
SavePerson(arr);