我有一个ICollection
。有财产。_ 我想在我的. 我知道我可以通过迭代集合和构建数组来做到这一点,但是有没有更简洁的方法来使用 lambda 表示法呢?Thing
Thing
string
Name
Name
ICollection
问问题
2398 次
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 回答