我有一个对象列表调用Person我想从列表中创建一个制表符分隔的字符串
示例:
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"} )
我想将该列表输出到一个如下所示的字符串:
"bob\t15\t999-999-0000\r\nsue\t25\999-999-0000\r\nlarry\t75\999-999-0000\r\n"
现在我只是要循环浏览列表并按照旧时尚的方式逐行进行..我想知道这是否是LINQ的捷径。
答案 0 :(得分:5)
使用StringBuilder汇总格式化的人员字符串。因此,您将避免在内存中创建大量字符串:
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());
答案 1 :(得分:4)
您可以使用Strig.Join
string str = string.Join(Environment.NewLine, person.Select(r=> r.FirstName +@"\t" +
r.Age + @"\t" +
r.Phone"))
答案 2 :(得分:0)
persons.ForEach(q => output+=(q.firstname+"\\"+q.Age.ToString()+"\\"+q.Phone+"\\"));