我有一个Thing
的ICollection
。 Thing
有一个string
属性Name
。 我想获得我的ICollection
中所有Name
的数组。 我知道可以通过迭代集合并构建数组来实现此目的,但是否有更简洁的lambda表示法来实现这一点?
我有一个Thing
的ICollection
。 Thing
有一个string
属性Name
。 我想获得我的ICollection
中所有Name
的数组。 我知道可以通过迭代集合并构建数组来实现此目的,但是否有更简洁的lambda表示法来实现这一点?
当然,LINQ可以让你轻松地做到这一点:
string[] names = things.Select(x => x.Name).ToArray();
当然,如果你只是要遍历它,你不需要 ToArray
部分:IEnumerable<string> names = things.Select(x => x.Name);
或者您可以使用 ToList
创建一个 List<string>
:
List<string> names = things.Select(x => x.Name).ToList();
在���有这些情况下,您都可以使用var
而不是明确声明变量类型-我只是为了清晰起见在此处包含了类型。ToList
比使用ToArray
略微更有效率,因为ToArray
中的最后一步涉及从可能超大的缓冲区复制到正确大小的数组。
RoleProvider
的GetRolesForUser
方法...我不预计会返回任何大数组。 - tacos_tacos_tacos