如何将可观察的集合写入txt文件?

时间:2013-09-16 18:20:49

标签: c# save observablecollection streamwriter writetofile

将可观察集合写入txt文件的最佳方法是什么?我目前有以下

public ObservableCollection<Account> SavedActionList = new ObservableCollection<Account>();   
using (System.IO.StreamWriter file = new System.IO.StreamWriter("SavedAccounts.txt")) 
        {
            foreach (Account item in SavedActionList)
            {
                file.WriteLine(item.ToString()); //doesn't work
            }
            file.Close();
        }

我不确定为什么它不会写入文件。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您可以轻松地写下:

File.WriteAllLines("SavedAccounts.txt", SavedActionList.Select(item => item.ToString()));

但是,这需要您的Account类覆盖ToString以提供您希望写入文件的信息。

如果您没有覆盖ToString,我建议您使用方法来处理此问题:

string AccountToLine(Account account)
{
   // Convert account into a 1 line string, and return
}

有了这个,你可以写:

File.WriteAllLines("SavedAccounts.txt", SavedActionList.Select(AccountToLine));

编辑以回应评论:

  

它根本不起作用。我真的很困惑为什么,这就是我发布问题的原因。我通过在file.Close()之前插入一个file.WriteLine(“Hello”)来测试它,当我运行程序并检查文件时它将包含的所有内容是“Hello”

这实际上听起来就像你在没有添加项目的情况下写出你的收藏品。如果集合为空,则上面的代码(和你的代码)将创建一个空的输出文件,因为没有要写出的Account个实例。