powershell - "The LinkedList node does not belong to current LinkedList"

标签 powershell collections linked-list hashtable

我在尝试了解如何将哈希表插入链接列表时遇到了困难。我已经记不清我尝试过的不同事情了。我知道我可以使用 ArrayList 或其他东西,但我想让它与 LinkedLists 一起工作,以便我可以对其进行基准测试...

这是我想出的:

#BEGIN SAMPLE SCRIPT
#------------------------
$list = New-Object Collections.Generic.LinkedList[Hashtable] 

For($i=1; $i -lt 10; $i++){
   $list.AddLast(@{ID=$i; X=100+$i;Y=100+$i}) 
} 

ForEach($item In $list){ 
   If($Item.x -eq 105){ 
       $list.AddAfter($item, @{ID=128;X=128;Y=128}) 
       Break
   } 
}  

ForEach($item In $list){
   write-host "ID:"$item.ID", X:"$item.x", Y:"$item.y", TYPE:" $item.GetType()
}
#-----------------------------------
#END SAMPLE SCRIPT

预期输出:

ID: 1 , X: 101 , Y: 101 , TYPE: System.Collections.Hashtable
ID: 2 , X: 102 , Y: 102 , TYPE: System.Collections.Hashtable
ID: 3 , X: 103 , Y: 103 , TYPE: System.Collections.Hashtable
ID: 4 , X: 104 , Y: 104 , TYPE: System.Collections.Hashtable
ID: 5 , X: 105 , Y: 105 , TYPE: System.Collections.Hashtable
ID: 128 , X: 128 , Y: 128 , TYPE: System.Collections.Hashtable
ID: 6 , X: 106 , Y: 106 , TYPE: System.Collections.Hashtable
ID: 7 , X: 107 , Y: 107 , TYPE: System.Collections.Hashtable
ID: 8 , X: 108 , Y: 108 , TYPE: System.Collections.Hashtable
ID: 9 , X: 109 , Y: 109 , TYPE: System.Collections.Hashtable

我得到的错误:

Exception calling "AddAfter" with "2" argument(s): 
"The LinkedList node does not belong to current LinkedList."

触发错误消息的行:

$list.AddAfter($item, @{ID=128;X=128;Y=128}) 

最佳答案

基本上,使用foreach,您会迭代值(hashtable),而不是LinkedListNode,这是预期的输入AddAfter 方法。我建议按如下方式迭代列表 -

#BEGIN SAMPLE SCRIPT
#------------------------
$list = New-Object Collections.Generic.LinkedList[Hashtable] 

For($i=1; $i -lt 10; $i++){
   $list.AddLast(@{ID=$i; X=100+$i;Y=100+$i}) 
} 

$current = $list.First

while(-not ($current -eq $null))
{
   If($current.Value.X -eq 105)
   { 
       $list.AddAfter($current, @{ID=128;X=128;Y=128}) 
       Break
   }

   $current = $current.Next
}  

ForEach($item In $list){
   write-host "ID:"$item.ID", X:"$item.x", Y:"$item.y", TYPE:" $item.GetType()
}
#-----------------------------------
#END SAMPLE SCRIPT

关于powershell - "The LinkedList node does not belong to current LinkedList",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139822/

相关文章:

powershell - Powershell 中的 Write-Output 对对象调用的默认方法是什么?

c# - 如何静态分配 Dictionary<TKey, TValue> 值

collections - 如何使用 Mongoid 判断 MongoDB 中是否存在集合?

collections - F# 中 list 和 [] 的区别

c++ - 如何编写一个函数来测试链接列表是否已排序

C++ Linked List -- 读取文件并根据数字对其进行排序

java - java中的链表反向函数

powershell - 使用 PowerShell 将 1 个文件与整个文件夹的文件进行比较

powershell - 从数组属性获取唯一索引项的最快方法

c# - .NET Framework x509Certificate2 类,HasPrivateKey == true && PrivateKey == null?