从对象数组中检索属性的数组

本文关键字:数组 属性 检索 对象 | 更新日期: 2023-09-27 18:01:49

假设如下类:

class Person
{
   public string FirstName {get;set;}
   public string LastName {get;set;}
}

假设我有一个Person对象列表或数组。是否有一种方法使用LINQ从所有数组元素中检索FirstName属性并返回字符串数组。我有一种感觉,我以前见过类似的东西。

希望这个问题是有意义的。

从对象数组中检索属性的数组

当然,很容易:

Person[] people = ...;
string[] names = people.Select(x => x.FirstName).ToArray();

除非你真的需要结果是一个数组,我会考虑使用ToList()而不是ToArray(),并可能只是把它作为一个惰性评估的IEnumerable<string>(即只是调用Select)。

如果您有数组,那么我个人会使用:

Person[] people = ...
string[] names = Array.ConvertAll(people, person => person.FirstName);

;它避免了一些重新分配,并适用于更多版本的。net。同样:

List<Person> people = ...
List<string> names = people.ConvertAll(person => person.FirstName);

LINQ将工作,但实际上不是需要在这里

试试这个:

List<Person> people = new List<Person>();
people.Add(new Person()
    {
        FirstName = "Brandon",
        LastName = "Zeider"
    });
people.Add(new Person()
{
    FirstName = "John",
    LastName = "Doe"
});
var firstNameArray = people.Select(p => p.FirstName).ToArray();