ICollection & lt; T>到字符串数组(使用字符串属性)

本文关键字:字符串 数组 属性 lt ICollection | 更新日期: 2023-09-27 18:16:28

我有一个ThingICollectionThing具有string属性Name。我想在我的ICollection中获得所有Name的数组。我知道我可以通过遍历集合并构建数组来做到这一点,但是是否有更简洁的方法来使用lambda表示法?

ICollection & lt; T>到字符串数组(使用字符串属性)

当然,LINQ让你很容易做到这一点:

string[] names = things.Select(x => x.Name).ToArray();

当然,如果你只是要迭代它,你不需要ToArray部分:

IEnumerable<string> names = things.Select(x => x.Name);

或者你可以用ToList:

创建List<string>
List<string> names = things.Select(x => x.Name).ToList();

在所有这些情况下,您都可以使用var而不是显式声明变量类型-为了清晰起见,我在这里只包含了类型。

使用ToList可以比使用ToArray更有效,因为ToArray的最后一步涉及从可能过大的缓冲区复制到大小合适的数组。

编辑:现在我们知道你真的需要一个数组,它将是稍微更有效的自己做这个手工循环,因为你知道大小事先。我肯定会使用第一种形式,直到我知道这是一个问题:)