-1
我的腳本有兩個錯誤,我需要幫助理解。刪除列表中的所有匹配節點
if
語句查找原始列表中的匹配值。然後將其刪除。由於某種原因,這不起作用。 items.Remove(item)
實際上並沒有刪除該項目。
else語句有效。但我有一種感覺,我可以在一行中完成這一切。
想法?如果可能的話,我想避免將它列入清單。它最初是一個ObservableCollection
。
var items = TreeViewCollection.ToList();
if (items.Contains(SelectedTreeViewItem))
items.Remove(SelectedTreeViewItem);
else
items.ForEach(e=>e.Nodes.Remove(SelectedTreeViewItem));
更新:我更新了代碼,使一點更有意義。
我的目標是把它做成一行。
if (TreeViewCollection.Contains(SelectedTreeViewItem))
TreeViewCollection.Remove(SelectedTreeViewItem);
else
TreeViewCollection.ToList().ForEach(e=>e.Nodes.Remove(SelectedTreeViewItem));
我不明白你的問題。對'items.Remove()'的調用應該很好地移除該項目。但它從'items'列表中刪除。您是否希望它從「TreeViewCollection」對象中移除?你需要提供一個好的[mcve],並精確地解釋代碼的功能,以及你想要它做什麼。 –
你是否通過代碼進行調試,並確保它進入'if'? –
是的,我沒有調試代碼,看看它是否在裏面,如果它確實。我甚至調試了代碼以查看它是否進入其他內部,並且確實如此。其他的按預期工作,但如果沒有。 –