3
我有一个ICollection
的Thing
。 Thing
有一个string
财产Name
。我想在我的ICollection
中获得所有Name
的数组。我知道我可以通过遍历集合和构建数组来做到这一点,但是有没有更好的方法来用lambda表示法来完成此操作?ICollection <T> to string array(using string property)
我有一个ICollection
的Thing
。 Thing
有一个string
财产Name
。我想在我的ICollection
中获得所有Name
的数组。我知道我可以通过遍历集合和构建数组来做到这一点,但是有没有更好的方法来用lambda表示法来完成此操作?ICollection <T> to string array(using string property)
当然,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
最后一步从可能-超大缓冲至合适大小的阵列包括复制。
编辑:现在我们知道你真的做需要一个数组,这将是略更有效使用手动循环来自己做,你也知道的大小提前。我肯定会使用第一种形式,直到我知道它是一个问题,虽然:)
谢谢 - 我想要一个字符串数组的原因是为我的'RoleProvider'实现方法'GetRolesForUser' ...我是不预期任何大阵列被返回 –
@tacos_tacos_tacos:对 - 如果你肯定需要一个字符串数组,那么第一个就是你要的。 –