相关疑难解决方法(0)

Powershell中Hashtables的联盟与交集

联盟和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)

powershell

6
推荐指数
1
解决办法
1352
查看次数

使用 get_Keys() 方法进行集合是否正确

与此问题相关:我可以将名为“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()方法的引用,并且几乎没有任何有关此方法的文档。
使用这种方法安全吗?

.net collections methods powershell hashtable

4
推荐指数
1
解决办法
558
查看次数

标签 统计

powershell ×2

.net ×1

collections ×1

hashtable ×1

methods ×1