C# 从对象列表创建以制表符分隔的字符串

C# 从对象列表创建以制表符分隔的字符串,c#,linq,C#,Linq,我有一个对象列表,我想从列表中创建一个以制表符分隔的字符串 例如: public class Person { public string FirstName { get; set; } public int Age { get; set; } public string Phone { get; set; } } List<Person> persons = new List<Persons>(); persons.add ( new

我有一个对象列表,我想从列表中创建一个以制表符分隔的字符串

例如:

public class Person 
{
    public string FirstName { get; set; }
    public int Age { get; set; }
    public string Phone { get; set; }
}



List<Person> persons = new List<Persons>();

persons.add ( new person {"bob",15,"999-999-0000"} )
persons.add ( new person {"sue",25,"999-999-0000"} )
persons.add ( new person {"larry",75,"999-999-0000"} )
现在我只是想循环浏览一下列表,然后按照老的方式一行一行地做。。我想知道这是否是LINQ的捷径。

您可以使用


将格式化的person字符串聚合为。因此,您将避免在内存中创建大量字符串:

var result = persons.Aggregate(
    new StringBuilder(),
    (sb, p) => sb.AppendFormat("{0}\t{1}\t{2}\r\n", p.FirstName, p.Age, p.Phone),
    sb => sb.ToString());

我认为更好的方法是重写Person-ToString方法,然后使用String.Join('\r',list.Select(Person=>Person.ToString()).ToArray())…除了“\r”之外,最好的方法不是新的一行windows@ViacheslavSmityukh,是的,我认为使用
Environment.NewLine
string str = string.Join(Environment.NewLine, person.Select(r=> r.FirstName +@"\t" +
                                    r.Age + @"\t" +
                                    r.Phone"))
var result = persons.Aggregate(
    new StringBuilder(),
    (sb, p) => sb.AppendFormat("{0}\t{1}\t{2}\r\n", p.FirstName, p.Age, p.Phone),
    sb => sb.ToString());
persons.ForEach(q => output+=(q.firstname+"\\"+q.Age.ToString()+"\\"+q.Phone+"\\"));