Я пытаюсь создать переменную, содержащую строку свойств объекта, которые объединяются с "','". Это должно быть передано в SQL условие выбора где. Мой ввод выглядит следующим образом:
foreach ($csv in $CSVFiles) {
$csvOutput = Import-Csv $csv.FullName
$group = $csvOutput | Group-Object order-id, amount-type | Where-Object {$_.Group.'order-id' -ne '' -and $_.Group.'amount-type' -eq 'ItemPrice'}}
В пределах вышеуказанного l oop. Я ищу, чтобы получить идентификатор заказа и передать его в новую переменную $ OrdNum. Я делаю это так:
$OrdNum = $group | Select-Object @{Name='order-id';Expression={$_.Values[0]}}
Чтобы выполнить объединение, которое я попытался:
$OrdNum = ($group | Select-Object @{Name='order-id';Expression={$_.Values[0]}}) -join "','"
Это дает ',' ',' ',' ',' ', '', '', '', '', '', '', '', 'без значений. Я также пытался:
$OrdNum = ($group | Select-Object -Property 'order-id') -join "','"
, который дает тот же результат.
Я ожидаю, что $ OrdNum будет выглядеть как 12345 ',' 43567 ',' 76334 ',' 23765 et c. Я работаю в предположении, что $ OrdNum требуется в этом формате для передачи на этот SQL запрос:
$query = “SELECT ARIBH.ORDRNBR AS [ORDER No'],AROBP.IDRMIT AS [RECPT No'], FROM [XXXX].[dbo].[AROBP] FULL JOIN [XXXX].[dbo].[ARIBH] ON [XXXX].[dbo].[AROBP].[IDMEMOXREF] = [XXXX].[dbo].[ARIBH].[IDINVC] where ARIBH.ORDRNBR IN ('$OrdNum')"
Любая помощь по -join очень ценится ИЛИ, если есть альтернативный метод для передачи значения в SQL избегая-присоединения, тогда я открыт для предложений. Большое спасибо.
Спасибо Тео за обновленный код. Это работает как ожидалось. Я также переработал свой существующий пример со следующим. Сохраняя оригинальную группировку, это также работает:
foreach ($csv in $CSVFiles) {
$csvOutput = Import-Csv $csv.FullName -Delimiter "`t"
$group = $csvOutput | Group-Object order-id, amount-type | Where-Object {$_.Group.'order-id' -ne '' -and $_.Group.'amount-type' -eq 'ItemPrice'}
($OrdNum = $csvOutput | Where-Object {![string]::IsNullOrWhiteSpace($_.'order-id')}).'order-id' | Out-Null
$OrdNum = ($OrdNum.'order-id' | Select-Object -Unique) -join "','"
}