2013-06-01 177 views

回答

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最后一步从可能-超大缓冲至合适大小的阵列包括复制。

编辑:现在我们知道你真的需要一个数组,这将是更有效使用手动循环来自己做,你也知道的大小提前。我肯定会使用第一种形式,直到我知道它是一个问题,虽然:)

+0

谢谢 - 我想要一个字符串数组的原因是为我的'RoleProvider'实现方法'GetRolesForUser' ...我是不预期任何大阵列被返回 –

+0

@tacos_tacos_tacos:对 - 如果你肯定需要一个字符串数组,那么第一个就是你要的。 –