tac*_*cos 3 c# linq lambda icollection
我有一个ICollection
的Thing
.Thing
有string
房产Name
.我想得到一个Name
在我的所有ICollection
.我知道我可以通过遍历集合并构建数组来实现这一点,但是有一种更简洁的方法来使用lambda表示法吗?
Jon*_*eet 10
当然,LINQ可以让你轻松完成这项工作:
string[] names = things.Select(x => x.Name).ToArray();
Run Code Online (Sandbox Code Playgroud)
当然,如果你只是要迭代它,你不需要这个ToArray
部分:
IEnumerable<string> names = things.Select(x => x.Name);
Run Code Online (Sandbox Code Playgroud)
或者你可以创建一个List<string>
具有ToList
:
List<string> names = things.Select(x => x.Name).ToList();
Run Code Online (Sandbox Code Playgroud)
在所有这些情况下,您可以使用var
而不是显式声明变量类型 - 为了清楚起见,我仅在此处包含了类型.
使用ToList
可以比使用更有效ToArray
,因为最后一步ToArray
涉及从可能超大的缓冲区复制到正确大小的数组.
编辑:现在我们知道你真的做需要一个阵列,这将是稍微更高效的带手动循环来自己做,你也知道的大小提前.我肯定会使用第一种形式,直到我知道这是一个问题虽然:)
归档时间: |
|
查看次数: |
1797 次 |
最近记录: |