PowerShell中DataTable中列的最大长度

时间:2017-08-22 14:52:18

标签: .net powershell datatable

我在网站上找到了这段代码,可以在PowerShell中找到DataTable中列的最大长度。这是代码:

$columns = ($datatable | Get-Member -MemberType Property).Name

foreach($column in $Columns) {

    $max = 0
    foreach ($a in $datatable){
        if($max -lt $a.$column.length){
            $max = $a.$column.length
        }
    }

    $output = New-Object psobject
    $output | Add-Member NoteProperty Column ($column)
    $output | Add-Member NoteProperty Max ($max)

    Write-Output $output
}

它确实找到了列中的最大长度,但是它给了我这个结果:

Column Max 
A       3
A       4
A       5
B      10
C      19
C      29
D       9

该文件只有4列,大约有300k +行 Max中最大的值是列中的实际最大字符数,结果将导出为csv文件,然后有其他用途。所以我没有在csv文件中添加那些额外的行。

循环出了什么问题?

谢谢

编辑:

这是代码的其余部分:

$FileHeaders = @( (Get-Content $files -first 1).Split($delimiter) )

#take out all the nonword/number character in header
$CleanHeaders = @(($FileHeaders.Split("$delimiter") -replace "[^a-zA-Z0-9_]", "").ToLower())

$readfiles = Get-Item $files

#create the streamreader
$reader = New-Object -TypeName System.IO.StreamReader -ArgumentList ($readfiles)

#create a data table
$datatable = New-Object -TypeName System.Data.DataTable

#insert the header to the columen headers
foreach ( $CleanHeader in $CleanHeaders ) {

     [void]$datatable.Columns.Add($CleanHeader)

}

$reader.ReadLine() > $null

#call the streamreader to read the files
while ( $reader.Peek() -ge 0 ) {

      $line = $reader.ReadLine()

      #import the data into the table                                                                                
      [void]$datatable.Rows.Add($line.Split($delimiter))
}

$ files和$ delimiter已定义。

0 个答案:

没有答案