假设以下课程:
class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
让我们说我有一个列表或一个Person对象数组.有没有办法使用LINQ从所有数组元素中检索FirstName属性并返回一个字符串数组.我有一种感觉,我以前见过这样的东西.
希望这个问题有道理.
Jon*_*eet 13
当然,很容易:
Person[] people = ...;
string[] names = people.Select(x => x.FirstName).ToArray();
Run Code Online (Sandbox Code Playgroud)
除非您确实需要将结果作为数组,否则我会考虑使用ToList()而不是ToArray(),并且可能只是将其作为延迟评估IEnumerable<string>(即仅调用Select).这取决于你将如何处理结果.
如果您有一个阵列,那么就个人而言,我会使用:
Person[] people = ...
string[] names = Array.ConvertAll(people, person => person.FirstName);
Run Code Online (Sandbox Code Playgroud)
这里; 它避免了一些重新分配,并适用于更多版本的.NET.同样:
List<Person> people = ...
List<string> names = people.ConvertAll(person => person.FirstName);
Run Code Online (Sandbox Code Playgroud)
LINQ可以工作,但这里实际上并不需要.