在联盟和Powershell的交叉点?描述了用于设置阵列操作的冷单行.
我想用哈希表做这个,并使用字典的键集有一个解决方案.为了扩展到值,我使用for循环迭代密钥的交集并将值复制到新的结果哈希表.这看起来不干净.
进一步的研究表明GetEnumerator的解决方案也不干净恕我直言.
如何通过简洁明了的单行替换膨胀的for循环或枚举器?
源代码如下:
http://paste.ubuntu.com/13362425/
# import csv
$a = Import-Csv -Path A.csv -Delimiter ";" -Header "Keys","Values"
$b = Import-Csv -Path B.csv -Delimiter ";" -Header "Keys","Values"
# Make nice hashtables for further use
$AData = @{}
foreach($r in $a)
{ $AData[$r.Keys] = $r.Values }
$BData = @{}
foreach($r in $b)
{ $BData[$r.Keys] = $r.Values }
# Set difference to find missing entries
$MissingA = $AData.Keys | ?{-not ($BData.Keys -contains $_)}
# I don't know how to do …Run Code Online (Sandbox Code Playgroud) 与此问题相关:我可以将名为“keys”的键添加到哈希表而不覆盖“keys”成员吗?
实际上,我经常使用该get_Keys() 方法,因为推荐的PSBase 属性只会解决问题。
换句话说,对于未知的目录键列表,在解决方案如下的情况下,此方法显得特别方便:Powershell Merge 2列出 Performance。
该方法按预期工作(也在其他集合、任何 PowerShell 版本和 .Net Core 上):
$Hash = @{Keys = 'MyKeys'; PSBase = 'MyPSBase'}
$Hash.get_Keys()
PSBase
Keys
Run Code Online (Sandbox Code Playgroud)
该get_Keys()方法显然源自:
$Hash.get_Keys
OverloadDefinitions
-------------------
System.Collections.ICollection get_Keys()
System.Collections.ICollection IDictionary.get_Keys()
Run Code Online (Sandbox Code Playgroud)
关键是我无法找到在哪里找到对此get_Keys()方法的引用,并且几乎没有任何有关此方法的文档。
使用这种方法安全吗?