Не выводить повторяющиеся значения в CSV-файл - PullRequest
0 голосов
/ 04 ноября 2019

Я конвертирую файл json в файл csv. Я вывожу четыре столбца в моем CSV-файле, но я не хочу выводить дублирующиеся значения.

Я добавляю переменные в массив и выводю их в CSV-файл, и если в «Имя» есть дубликатыстолбец, так что если дубликат встречается, не добавляйте его в вывод. Я не совсем уверен, как это сделать.

 ForEach ($fileEnvironment in $jsonVariables.ScopeValues.Environments) { 
        #Create empty array
        $dataArray = @()

      ForEach ($fileVariable in $jsonVariables.Variables) {
         if($fileVariable.Description -eq $null) {
            $fileVariable.Description = 'No Description'
        }
            if (!!$fileVariable.Scope) {
                if (!!$fileVariable.Scope.Environment) {
                    if ($fileEnvironment.Id -eq $fileVariable.Scope.Environment[0]) {                   
                        #Add fileVariable to the array
                        $dataArray += $fileVariable

                    } 
                }
            }
        }

  $filename="$($outputPath)\$($projectName)_$($fileEnvironment.Name).csv"
            if ($dataArray.Count -ne 0) {
                 $dataArray | Select-Object -Property 
  Name,Type,Value,Description | Export-Csv -NoTypeInformation -Path 
  $fileName
        }            

Я не хочу, чтобы столбец Имя имел повторяющиеся значения, чтобы вы могли видеть, что apiconfig повторяется, и я хотел бы, чтобы только один apiconfig был выведен в CSV,В файле csv вывод выглядит так: Имя Тип Значение Описание apiConfig String ... Нет Описание apiconfig String ... Нет Описание

1 Ответ

0 голосов
/ 04 ноября 2019

Вы можете использовать HashSet для фильтрации дубликатов.

Вот журнал консоли, который иллюстрирует идею.

$listWithDuplicates = @([PSCustomObject]@{Name="A";Desc="1"},[PSCustomObject]@{Name="A";Desc="2"},[PSCustomObject]@{Name="B";Desc="3"})

▷ $listWithDuplicates

Name Desc
---- ----
A    1
A    2
B    3

▷ $set = New-Object "System.Collections.Generic.HashSet[string]"
▷ $listWithoutDuplicates = $listWithDuplicates  |? {$set.Add($_.Name)}
▷ $listWithoutDuplicates

Name Desc
---- ----
A    1
B    3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...