ICollection <t>到字符串数组(使用字符串属性)</t>

时间:2013-06-01 16:59:30

标签: c# linq lambda icollection

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

1 个答案:

答案 0 :(得分:10)

当然,LINQ可以让您轻松完成此任务:

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

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

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

或者您可以使用List<string>创建ToList

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

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

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

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