4

我有一个ICollection。有财产。_ 我想在我的. 我知道我可以通过迭代集合和构建数组来做到这一点,但是有没有更简洁的方法来使用 lambda 表示法呢?ThingThingstringNameNameICollection

4

1 回答 1

11

当然,LINQ 让您可以非常轻松地做到这一点:

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

当然,如果您只是要对其进行迭代,则不需要该ToArray部分:

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

或者您可以创建一个List<string>with ToList

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

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

usingToList可能比 using 更有效ToArray,因为最后一步ToArray涉及从可能超大的缓冲区复制到正确大小的数组。

编辑:现在我们知道您确实需要一个数组,因为您事先知道大小,所以使用手动循环自己执行此操作会更有效我肯定会使用第一种形式,直到我知道这是一个问题:)

于 2013-06-01T17:01:59.793 回答