在PowerShell中,如何将两个集合与具有两部分键的表相交?
我有如下输入数据: 福安 FOO.B 富科 酒吧 酒吧 还有一个规则表,如: (FOO=A,BAR=X)=>1#匹配 (FOO=A,BAR=Z)=>2#不匹配 (FOO=B,BAR=X)=>3#匹配 我想获取输入数据,并询问表“哪些条目与此输入数据匹配?”,然后返回第1行和第3行 我考虑过使用哈希表,其中FOO是键,值是一个哈希表,BAR是键,1是值。问题是,存在重复的密钥 在PowerShell中写这篇文章的惯用方法是什么在PowerShell中,如何将两个集合与具有两部分键的表相交?,powershell,Powershell,我有如下输入数据: 福安 FOO.B 富科 酒吧 酒吧 还有一个规则表,如: (FOO=A,BAR=X)=>1#匹配 (FOO=A,BAR=Z)=>2#不匹配 (FOO=B,BAR=X)=>3#匹配 我想获取输入数据,并询问表“哪些条目与此输入数据匹配?”,然后返回第1行和第3行 我考虑过使用哈希表,其中FOO是键,值是一个哈希表,BAR是键,1是值。问题是,存在重复的密钥 在PowerShell中写这篇文章的惯用方法是什么 性能并不重要:数据集很小。以下是我试图使用的,我认为它会起作用
性能并不重要:数据集很小。以下是我试图使用的,我认为它会起作用 FOO.A FOO.B FOO.C BAR.X BAR.Y
只是一个想法。是否检查了Compare-Object cmdlet (FOO = A, BAR = X) => 1 # match (FOO = A, BAR = Z) => 2 # no match (FOO = B, BAR = X) => 3 # match
$table = @(
@{
Foo = "A"
Bar = "X
Value = 1
},
@{
Foo = "A"
Bar = "Y"
Value = 2
},
@{
Foo = "B"
Bar = "Z"
Value = 3
}
)
$table | foreach {
$row = $_
$foo = $input.Foos | where {
$_.Name -eq $row.Foo
}
$bar = $input.Bars | where {
$_.Name -eq $row.Bar
}
if ($foo -and $bar) {
# processing
}
}