ICollection <T>到字符串数组(使用字符串属性)

tac*_*cos 3 c# linq lambda icollection

我有一个ICollectionThing.Thingstring房产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涉及从可能超大的缓冲区复制到正确大小的数组.

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