C# i收集<;T>;到字符串数组(使用字符串属性)
我有一个C# i收集<;T>;到字符串数组(使用字符串属性),c#,linq,lambda,icollection,C#,Linq,Lambda,Icollection,我有一个I集合的东西东西有一个字符串属性名称。我想在我的ICollection中获取所有Name的数组。我知道我可以通过迭代集合和构建数组来实现这一点,但是有没有更简洁的方法使用lambda表示法来实现这一点?当然,LINQ可以让您非常轻松地实现这一点: string[] names = things.Select(x => x.Name).ToArray(); 当然,如果您只是要对其进行迭代,则不需要ToArray部分: IEnumerable<string> names
I集合的东西
<代码>东西
有一个字符串
属性名称
。我想在我的ICollection
中获取所有Name
的数组。我知道我可以通过迭代集合和构建数组来实现这一点,但是有没有更简洁的方法使用lambda表示法来实现这一点?当然,LINQ可以让您非常轻松地实现这一点:
string[] names = things.Select(x => x.Name).ToArray();
当然,如果您只是要对其进行迭代,则不需要ToArray
部分:
IEnumerable<string> names = things.Select(x => x.Name);
在所有这些情况下,您都可以使用var
而不是显式声明变量类型-为了清楚起见,我只在这里包含了类型
使用ToList
可能比使用ToArray
稍微有效一些,因为ToArray
中的最后一步涉及从可能过大的缓冲区复制到适当大小的数组
编辑:现在我们知道你真的需要一个数组,如果你事先知道数组的大小,那么你自己用一个手动循环来完成这个任务会稍微有效一些。我肯定会使用第一个表单,直到我知道这是一个问题:)谢谢-我想要一个字符串数组的原因是为我的RoleProvider
实现方法GetRolesForUser
。。。我不认为会出现任何大型阵列returned@tacos_tacos_tacos:Right-如果您确实想要字符串数组,那么第一个数组就是您想要的。
List<string> names = things.Select(x => x.Name).ToList();