2

C# 「人」の詳細の取得/設定リストを読み書きするコンソール アプリがあります。テキストファイルにも書き込もうとするまでは正しく動作します。リスト全体ではなく、「Person」の詳細の最後の行がテキスト ファイルに書き込まれる理由を誰か教えてもらえますか?

        loadData();

        Console.WriteLine("All People");
        //1st query - just select all people
        var queryAllPeople = from person in people  select person;

        foreach (Person p in queryAllPeople)
        {
            using (StreamWriter writer = new StreamWriter("people.txt"))
            {

                writer.WriteLine(p);

            }
            Console.WriteLine(p);
        }

        Console.ReadLine();
4

4 に答える 4

20

foreach を using ステートメント内に配置します。ループの繰り返しごとにファイルを上書きしています

于 2012-11-30T13:45:27.193 に答える
7

反復ごとに同じ名前の新しいファイルを作成しています。StreamWriter代わりに、ループの外側を作成する必要があります。

using (StreamWriter writer = new StreamWriter("people.txt"))
{
    foreach (Person p in queryAllPeople)
    {
        writer.WriteLine(p);
        Console.WriteLine(p);
    }
}
于 2012-11-30T13:45:45.190 に答える
4

毎回ファイルを再作成しています。試す:

using (StreamWriter writer = new StreamWriter("people.txt"))
{
    foreach (Person p in queryAllPeople)
    {
        writer.WriteLine(p);
        Console.WriteLine(p);
    }

}
于 2012-11-30T13:46:25.880 に答える
3

パラメータとして追加を受け入れるStreamWriterへのオーバーロードを使用して、毎回ファイルに値を追加します。

foreach (Person p in queryAllPeople)
{
  using (StreamWriter writer = new StreamWriter("people.txt", true))
  {

     writer.WriteLine(p);

  }
  Console.WriteLine(p);
}

usingまたは、ステートメントで foreach をラップするだけです。

于 2012-11-30T13:46:44.350 に答える