Это первый раз, когда я пишу функцию, которая может называть себя. Я пытаюсь удалить все столбцы DataTable
, где строки пустые.PowerShell DataTable ошибочно удаляет пустую логику столбцов
Код работает нормально, но выплевывает некоторые ошибки. По той или иной причине он зацикливается в последний раз через цикл for
со старым номером $Columns
, который все еще находится в памяти. Хотя я его заполнение снова каждый раз, когда функция называется ... Я не понимаю, почему ..
Код:
Function Remove-EmptyColumns {
$Columns = $DataTable.Columns.Count
$Rows = $DataTable.Rows.Count
for ($c = 0; $c -lt $Columns; $c++) {
$Empty = 0
for ($r = 0; $r -lt $Rows; $r++) {
if ($DataTable.Rows[$r].Item($c).ToString() -eq '') {
$Empty++
}
}
if ($Empty -eq $Rows) {
$DataTable.Columns.Remove($DataTable.Columns[$c])
Remove-EmptyColumns
}
}
}
Спасибо за вашу помощь.
Я думал, что, но это не работает. После удаления столбца номер идентификатора для других столбцов изменяется. – DarkLite1
попробуйте отредактированный ответ – dustinmoris
Ваше отредактированное предложение отлично работает, спасибо. Мне пришлось изменить его на '$ columnsToRemove + = $ DataTable.Columns [$ c]', так как это нормальный 'Array' по умолчанию, а не' ArrayList'. Это обходное решение отлично! Спасибо, должен был подумать об этом сам ...: P – DarkLite1