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+"\\"));