for-each-object inside for-each-object
for-each-object inside for-each-object
我在循环中编写循环,并将主循环变量用于子循环数组变量。
输入参数
param(
[array]$Emp_ID=@(1,2),
[array]$Emp_Name=@("Scott", "Jones")
)
$Sql_Get_Emp_ID_List = @()
$Emp_ID | ForEach-Object { $Src_Emp_ID = $_
$Emp_Name | ForEach-Object { $Src_Emp_Name = $_
$Query_GetDeptID="(Select Dept_ID From Dept_Table Where Emp_Name = '$Src_Emp_Name' And Emp_ID = $Src_Emp_ID)"
}
}
我从上述 for-each-object 循环中得到 4 个交叉连接 sql 语句。以下是声明,但我只想获得 2 个声明。
Select Dept_ID From Dept_Table Where Emp_Name = 'Scott' And Emp_ID = 1
Select Dept_ID From Dept_Table Where Emp_Name = 'Scott' And Emp_ID = 2
Select Dept_ID From Dept_Table Where Emp_Name = 'Jones' And Emp_ID = 1
Select Dept_ID From Dept_Table Where Emp_Name = 'Jones' And Emp_ID = 2
我想要这样的输出:
Select Dept_ID From Dept_Table Where Emp_Name = 'Scott' And Emp_ID = 1
Select Dept_ID From Dept_Table Where Emp_Name = 'Jones' And Emp_ID = 2
如果要遍历两个等长数组,可以对两个数组使用一个 Foreach-Object
和一个索引。
$emp_id = 1,2
$emp_name = 'scott','jones'
$query = "Select Dept_ID From Dept_Table Where Emp_Name = '{0}' And Emp_ID = {1}"
0..($emp_id.Count-1) | Foreach-Object { $query -f $emp_name[$_],$emp_id[$_] }
解释:
$emp_id.Count
returns $emp_id
数组中的项目数 (2)。由于索引从 0 开始,因此您只需要索引 [0]
和 [1]
即可。 $query
是您的查询字符串,占位符 {0}
和 {1}
用于 string format operator (-f
)。然后 Foreach-Object
为每个索引创建一个查询,从每个数组中替换一个元素(相同的元素)。
我在循环中编写循环,并将主循环变量用于子循环数组变量。
输入参数
param(
[array]$Emp_ID=@(1,2),
[array]$Emp_Name=@("Scott", "Jones")
)
$Sql_Get_Emp_ID_List = @()
$Emp_ID | ForEach-Object { $Src_Emp_ID = $_
$Emp_Name | ForEach-Object { $Src_Emp_Name = $_
$Query_GetDeptID="(Select Dept_ID From Dept_Table Where Emp_Name = '$Src_Emp_Name' And Emp_ID = $Src_Emp_ID)"
}
}
我从上述 for-each-object 循环中得到 4 个交叉连接 sql 语句。以下是声明,但我只想获得 2 个声明。
Select Dept_ID From Dept_Table Where Emp_Name = 'Scott' And Emp_ID = 1
Select Dept_ID From Dept_Table Where Emp_Name = 'Scott' And Emp_ID = 2
Select Dept_ID From Dept_Table Where Emp_Name = 'Jones' And Emp_ID = 1
Select Dept_ID From Dept_Table Where Emp_Name = 'Jones' And Emp_ID = 2
我想要这样的输出:
Select Dept_ID From Dept_Table Where Emp_Name = 'Scott' And Emp_ID = 1
Select Dept_ID From Dept_Table Where Emp_Name = 'Jones' And Emp_ID = 2
如果要遍历两个等长数组,可以对两个数组使用一个 Foreach-Object
和一个索引。
$emp_id = 1,2
$emp_name = 'scott','jones'
$query = "Select Dept_ID From Dept_Table Where Emp_Name = '{0}' And Emp_ID = {1}"
0..($emp_id.Count-1) | Foreach-Object { $query -f $emp_name[$_],$emp_id[$_] }
解释:
$emp_id.Count
returns $emp_id
数组中的项目数 (2)。由于索引从 0 开始,因此您只需要索引 [0]
和 [1]
即可。 $query
是您的查询字符串,占位符 {0}
和 {1}
用于 string format operator (-f
)。然后 Foreach-Object
为每个索引创建一个查询,从每个数组中替换一个元素(相同的元素)。