Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# i收集<;T>;到字符串数组(使用字符串属性)_C#_Linq_Lambda_Icollection - Fatal编程技术网

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();