如何使用LINQ将类属性列表转换为字符串?

时间:2015-06-05 11:40:28

标签: c# linq

我有以下课程:

public class Person
    {
        public string FirstName = string.Empty;
        public string LastName = string.Empty;
    }

和该类的列表:

List<Person> listOfPeople = new List<Person>();

如何在不使用foreach并循环遍历listOfPeople的列表中将FirstNames列入字符串或字符串列表变量? 我希望得到类似的东西:

string firstNames= "Bob, Jack, Bill";

2 个答案:

答案 0 :(得分:3)

简单的Selectstring.Join相结合,可以满足您的需求。

string firstNames = string.Join(", ", listOfPeople.Select(p=>p.FirstName));

根据您使用的.Net版本,您可能还需要在ToArray之后添加Select作为string.Join的重载,需要IEnumerable<string>直到.Net 4才会添加。

在旁注中,请考虑将公共字段转换为属性。

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

    public Person()
    {
        FirstName = string.Empty;
        LastName = string.Empty;
    }
}

答案 1 :(得分:0)

您可以使用linq Aggregate函数来实现此目的

listOfPeople.Select(person => person.FirstName).Aggregate((i, j) => i + ", " + j);