Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将可观察的集合写入txt文件?_C#_Save_Observablecollection_Streamwriter_Writetofile - Fatal编程技术网

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

C# 如何将可观察的集合写入txt文件?,c#,save,observablecollection,streamwriter,writetofile,C#,Save,Observablecollection,Streamwriter,Writetofile,将可观察集合写入txt文件的最佳方式是什么?我目前有以下几点 public ObservableCollection<Account> SavedActionList = new ObservableCollection<Account>(); using (System.IO.StreamWriter file = new System.IO.StreamWriter("SavedAccounts.txt")) { for

将可观察集合写入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();
        }
公共ObservableCollection SavedActionList=新ObservableCollection(); 使用(System.IO.StreamWriter file=new System.IO.StreamWriter(“SavedAccounts.txt”)) { foreach(SavedActionList中的帐户项) { file.WriteLine(item.ToString());//不起作用 } file.Close(); }
我不知道为什么它不会写入文件。有什么想法吗?

你可以简单地写下:

File.WriteAllLines("SavedAccounts.txt", SavedActionList.Select(item => item.ToString()));
但是,这将要求您的
帐户
类重写
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”


这听起来像是你在写你的收藏,而没有添加任何东西。如果集合为空,上述代码(以及您的代码)将创建一个空的输出文件,因为没有要写入的
帐户
实例。

您可以轻松地写入:

File.WriteAllLines("SavedAccounts.txt", SavedActionList.Select(item => item.ToString()));
但是,这将要求您的
帐户
类重写
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”


这听起来像是你在写你的收藏,而没有添加任何东西。如果集合为空,上述代码(以及您的代码)将创建一个空的输出文件,因为没有要写入的
帐户
实例。

这应该会创建一些输出-当您说“不工作”时,与您的期望相比有什么不同/错误?它根本不工作。我真的很困惑为什么,这就是为什么我发布了这个问题。我通过在file.Close()之前插入一个file.WriteLine(“Hello”)来测试它,当我运行程序并检查文件时,它将包含的所有内容都是“Hello”,您确定收藏中确实有项目吗?如果您单步执行,它是否会进入file.WriteLine步骤?如果集合中没有任何项目,将跳过该选项…嗯,是的,你是对的。我正在调用一个类的新实例,因此我从未手动添加过任何帐户。我会回溯的,好的,是的,修好了。如果我有三个账户项目,我最终会得到这些项目:BankDataTypes.Account BankDataTypes.Account BankDataTypes.Account BankDataTypes,Account BankDataTypes.Account使用上述代码。这应该会产生一些输出-当你说“不起作用”时,与你的预期相比有什么不同/错误?根本不起作用。我真的很困惑为什么,这就是为什么我发布了这个问题。我通过在file.Close()之前插入一个file.WriteLine(“Hello”)来测试它,当我运行程序并检查文件时,它将包含的所有内容都是“Hello”,您确定收藏中确实有项目吗?如果您单步执行,它是否会进入file.WriteLine步骤?如果集合中没有任何项目,将跳过该选项…嗯,是的,你是对的。我正在调用一个类的新实例,因此我从未手动添加过任何帐户。我会回溯的,好的,是的,修好了。如果我有三个帐户项目,我最终会得到这些项目:BankDataTypes.AccountBankDatatypes.AccountBankDatatypes.AccountBankDatatypes,Account使用上述代码。我会尝试一下!谢谢,我成功地将这些项目添加到集合中,并且在我重载toString()之后,它与原始代码一起工作。谢谢。我试试看!谢谢,我成功地将这些项目添加到集合中,并且在我重载toString()之后,它与原始代码一起工作。谢谢