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 に答える