2

将可观察集合写入 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();
        }

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

4

1 回答 1

4

您可以轻松地编写:

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要写出的实例。

于 2013-09-16T18:25:55.983 回答