希望這不是一個重複的問題。我看了一下,發現了類似的問題,但在這種情況下還不夠。 我有許多樹視圖控件,並可以遍歷Nodes遞歸出於各種原因。 但是,我經常需要遍歷節點,就好像它們在列表中一樣。 我想創建一個函數,如果可能的話,創建一個來自Nodes集合的Generic.List(of TreeNode)
,而不遞歸。將Treeview節點收集到列表而不遞歸
(沒有遞歸純粹是爲了做它沒有遞歸的運動 - 我的理解可能是不可能的)
此功能可以節省很多時間重複使用跨大規模的解決方案,編碼人員可以使用簡單的For Each
範例遍歷節點。
我已經看到了一種技術,使用C#使用LINQ和遞歸「扁平化」Nodes集合,但我不確定該語法是否可以完全轉換爲VB.NET。所以如果有任何聰明的VB函數可以模擬這個任務 - 會非常有用。
還有很多類似的問題,並非常翔實的答案在SO,像這樣的: Enumerating Collections that are not inherently IEnumerable? ......這凸顯使用某種算法非常深的樹木堆棧溢出錯誤。我希望一個不使用遞歸的方法不會遭受堆棧溢出錯誤 - 但是,我已經準備好了,它可能會很長,笨拙和緩慢。
我也準備回答'這是不可能做到這一點,沒有遞歸'。不過,我想確認或拒絕使用的功率SO(本論壇)這種說法
你說你已經知道如何通過'TreeView'控制讀取找到的所有節點,那麼爲什麼不能你只是建立一個結果列表?目前還不清楚你遇到什麼困難。 – 2015-01-26 18:50:09
@StevenDoggart謝謝,是的,我可以遍歷並使用遞歸構建一個List。這個問題應該強調'不遞歸' - 如果可能的話。 – Grantly 2015-01-26 18:51:26
您希望列表中的項目位於哪個訂單中? – 2015-01-26 19:06:32