[英]Writing the contents of an ObservableCollection to a text file
這個問題的目標是找到一種方法來獲取ObservableCollection
特定內容(特定的strings
),並將它們寫入文本文件。
此集合由使用節點構成,因為它用於實現TreeView
。 話雖如此,我正在嘗試獲取父節點的子值,如下所示:
//I am currently getting an InvalidOperationException -- Sequence contains no matching element
var Node = Collection.GetAllChildren(x => x.Children).Distinct().ToList().First(x => x.DisplayName == Name);
為了寫入我正在使用此File.
方法: File.WriteAllLines()
。 我的理解是這個方法采用FileName,然后采用IEnumerable
( List
等)。 ObservableCollection
是否包含與IEnumberable
兼容的方法,還是需要將內容添加到List
?
現在我正在嘗試寫入文件行:
File.WriteAllLines(FileName, new ObservableCollection<string> { ViewModel.Data.ToList() });
如何糾正我的代碼中的這兩個有害部分? 獲取所需信息,然后將其添加到文件的正確方法是什么?
更新:這些是我在上面的代碼行中收到的當前錯誤。 如果我正確地實現這個(我是基於答案),為什么我收到這些編譯錯誤? (注意: type
已切換為string
)
更新2:我已經更新了要寫入文件的參數。 Data
是ObservableCollection<ViewModel>
。
是的, File.WriteAllLines
的重載需要IEnumerable<string>
。 ObservableCollection<string>
實現IEnumerable<string>
,所以事情應該有效。
Just Type
應該是string
:
File.WriteAllLines(FileName, new ObservableCollection<Type> ( NodeName.ToList() ));
ObservableCollection是否包含與IEnumberable兼容的方法
不,它實現了 IEnumerable。
PS正如在另一個答案中建議的那樣, ObservableCollection
是多余的。 您可以傳遞任何實現IEnumerable<string>
。
如果你看一下System.IO.File.WriteAllLines()的簽名,它接受一個字符串數組或一個IEnumerable字符串;
嘗試這個:
File.WriteAllLines(FileName, NodeName.ToList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.