将可观察集合写入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();
}
我不确定为什么它不会写入文件。有什么想法吗?
答案 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
个实例。