4

我有一个名为 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 中的捷径。

4

3 回答 3

6

使用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());
于 2013-01-18T08:19:25.487 回答
4

您可以使用Strig.Join

string str = string.Join(Environment.NewLine, person.Select(r=> r.FirstName +@"\t" +
                                    r.Age + @"\t" +
                                    r.Phone"))
于 2013-01-18T08:17:18.407 回答
0
persons.ForEach(q => output+=(q.firstname+"\\"+q.Age.ToString()+"\\"+q.Phone+"\\"));
于 2013-01-18T08:20:26.377 回答