簡體   English   中英

將ObservableCollection的內容寫入文本文件

[英]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,然后采用IEnumerableList等)。 ObservableCollection是否包含與IEnumberable兼容的方法,還是需要將內容添加到List

現在我正在嘗試寫入文件行:

File.WriteAllLines(FileName, new ObservableCollection<string> { ViewModel.Data.ToList() });

如何糾正我的代碼中的這兩個有害部分? 獲取所需信息,然后將其添加到文件的正確方法是什么?

更新:這些是我在上面的代碼行中收到的當前錯誤。 如果我正確地實現這個(我是基於答案),為什么我收到這些編譯錯誤? (注意: type已切換為string

更新2:我已經更新了要寫入文件的參數。 DataObservableCollection<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM