我尝试使用嵌套哈希表来获取特定值(数字)。 哈希表如下所示。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add
(new AttributeToColumnAnnotationConvention<CaseSensitive, bool>
("CaseSensitive", (property, attributes) => attributes.Single().IsEnabled));
}
我想通过按键查找来访问哈希表。 第一个例子很好用。
$Hashtable = @{
'Feature1' = @{
'Audit' = 1
'Block' = 2
'Change' = 3
}
'Feature2' = @{
'Audit' = 4
'Block' = 5
'Change' = 3
}
}
指定多个键也可以。
$Hashtable['Feature1']['Audit', 'Block']
1
2
但是,如果我在第一个哈希表中指定了多个键,则似乎无法访问嵌套的哈希表。
$Hashtable['Feature1', 'Feature2']
Name Value
---- ---- -
Block 2
Change 3
Audit 1
Block 5
Change 3
Audit 4
预期的输出为$Hashtable['Feature1', 'Feature2']['Block', 'Audit']
,2
,1
和5
,但我得到的是4
。
我确实有一种解决方法。如果我遍历第一个结果,就会得到预期的结果。
$null
我只是想知道是否有1)一种更好的方法,以及2)为什么我必须在该示例中循环。
我希望我可以像$Hashtable['Feature1', 'Feature2'] | % {$_['Block', 'Audit']}
2
1
5
4
一样访问哈希表,其中两个变量都是键数组。
答案 0 :(得分:2)
$Hashtable['Feature1', 'Feature2'].Block
$Hashtable['Feature1', 'Feature2']
是一个数组,array.Property
符号是为数组的所有元素选择单个属性的简写(需要PowerShell v3或更高版本)。
编辑:仅当您需要单个键时,以上方法才有效。如果您需要多个,我想不出任何方法来跳过对内部哈希表的迭代。一次选择多个键(例如$Hashtable['Feature1', 'Feature2']
)只能在哈希表上完成,而不能在数组上进行,并返回一个数组,因此无法链接。